source

mariadb에서 데이터 디렉토리 변경

manycodes 2023. 7. 5. 20:50
반응형

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

반응형