mariadb에서 데이터 디렉토리 변경
mariadb에서 데이터 디렉토리를 변경하려고 합니다. ini 파일에서 data dir 경로를 변경한 후 서비스를 다시 시작하려고 합니다. 시작할 수 없습니다!다음과 같은 경고 표시:
> Error 1067: The process terminated unexpectedly
MySQL에서는 data dir changing이 완벽하게 작동하고 있습니다.하지만 왜 같은 것이 작동하지 않는지 모르겠습니다.mariadb
.
기본 경로만 작동 중...
훌륭한 시스템 내부 도구(예: procmon)를 언급해야 하는데, 이는 이 상황뿐만 아니라 다른 많은 경우에도 매우 유용할 것입니다.Windows 오류 로그는 정말 유용한 두 번째 도구입니다.지식 습득 도구
이제 이 사례에 대한 구체적인 조언을 들어보겠습니다. MariaDB 서비스를 실행하는 사용자는 datadir 디렉토리에 파일을 작성할 수 있어야 합니다.기본적으로 MariaDB는 네트워크 서비스를 사용하고 MySQL은 로컬 시스템(가장 강력한 Windows 사용자)을 사용합니다.
이러한 변경으로 인해 MariaDB의 보안이 강화되지만(서비스가 해킹될 경우 영향이 적음) LocalSystem과 같이 NetworkService가 디렉토리에 대한 읽기/쓰기 액세스 권한을 가지고 있다고 생각해서는 안 됩니다.
따라서 문제를 해결하려면 네트워크 서비스에 대해 디렉토리를 쓰기 가능으로 설정하거나, 서비스 사용자를 디렉토리에 대한 읽기/쓰기 액세스 권한이 있는 디렉토리로 변경합니다.
최근에 누군가가 이것을 물었고, 저는 심볼릭 링크를 포함한 다른 답을 생각해냈습니다. 저는 이 솔루션이 가장 쉬울 것이라고 생각합니다. 저의 서비스 구성을 엉망으로 만들 필요가 없습니다.
설치 후 데이터 디렉토리를 이동하는 방법(예: 디스크 C:\가 꽉 찬 경우).
안타깝게도 MSI에서는 이 작업을 수행할 수 없기 때문에 수동으로 수행해야 합니다.
당신은 해야 합니다.
- 서비스 중지
- 데이터 디렉토리를 새 위치로 이동(권한 유지)
- 이전 위치에서 새 위치로 심볼 링크 만들기
- 서비스 계정(NetworkService)에 심볼릭 링크에 대한 전체 권한 부여
- 서비스 다시 시작
다음은 스크립트에서 이 작업을 수행하는 방법을 보여줍니다(높은 명령줄 등에서 전체 관리자 권한으로 실행해야 함).사용합니다robocopy
파일을 복사합니다.mklink
디렉터리 링크를 생성하려면,icacls
링크에 대한 사용 권한 설정 및net
를 시작
set SERVICE=MySQL
set SRCDIR="C:\Program Files\MariaDB 10.1\data"
set DESTDIR="D:\data"
net stop %SERVICE%
robocopy %SRCDIR% %DESTDIR% /MIR /SEC /MOVE
mklink /d %SRCDIR% %DESTDIR%
icacls %SRCDIR% /grant "NT AUTHORITY\NetworkService":F
net start %SERVICE%
현재 MSI에서 "데이터 제거"를 선택한 경우에도 제거 시 새 데이터를 제거하지 않습니다.
언급URL : https://stackoverflow.com/questions/13136998/changing-datadirectory-in-mariadb
'source' 카테고리의 다른 글
"참조" 권한이 필요한 이유는 무엇입니까? (0) | 2023.07.05 |
---|---|
한 번에 여러 개의 물건을 한 줄에 하나씩 인쇄하려면 어떻게 해야 합니까? (0) | 2023.07.05 |
FCM에 대한 올바른 토큰 검색 방법 - iOS 10 Swift 3 (0) | 2023.07.05 |
R에서 CRAN 미러를 선택하는 방법 (0) | 2023.07.05 |
Android에서 사용할 수 있는 인터넷 연결이 있는지 탐지 (0) | 2023.07.05 |