Iamがmariadbのデータディレクトリを変更しようとしています。iniファイルのデータディレクトリパスを変更した後、サービスを再起動しようとしましたが、起動できませんでした。次のような警告を表示します:
> Error 1067: The process terminated unexpectedly
MySQLでは、データディレクトリの変更は完全に機能しています。しかし、なぜ同じことがうまくいかないのかわかりませんmariadb
。
デフォルトのパスのみが機能しています...
Iamがmariadbのデータディレクトリを変更しようとしています。iniファイルのデータディレクトリパスを変更した後、サービスを再起動しようとしましたが、起動できませんでした。次のような警告を表示します:
> Error 1067: The process terminated unexpectedly
MySQLでは、データディレクトリの変更は完全に機能しています。しかし、なぜ同じことがうまくいかないのかわかりませんmariadb
。
デフォルトのパスのみが機能しています...
このような状況だけでなく、他の多くの状況でも非常に役立つ、すばらしいシステム内部ツール(procmonなど)について言及する必要があります。Windowsエラーログは、実際に役立つ2番目のツールです。調べてみると非常に役立ちます。ツールを知っている
ここで、この場合の具体的なアドバイスについて説明します。MariaDBサービスを実行するユーザーは、datadirディレクトリにファイルを作成できるはずです。デフォルトでは、MariaDBはネットワークサービスを使用しますが、MySQLはローカルシステム(最も強力なWindowsユーザー)を使用します。
この変更により、MariaDBはより安全になります(サービスがハッキングされた場合の影響は少なくなります)が、LocalSystemのように、NetworkServiceが任意のディレクトリへの読み取り/書き込みアクセス権を持つことを期待しないでください。
したがって、問題を解決するには、ディレクトリをNetworkServiceに対して書き込み可能にするか、サービスユーザーをディレクトリへの読み取り/書き込みアクセス権を持つユーザーに変更します。
最近誰かがこれを尋ねました、そして私はシンボリックリンクを含む別の答えを思いつきました。このソリューションが最も簡単で、my.iniやサービス構成を台無しにする必要はないと思います。
インストール後にデータディレクトリを移動する方法(たとえば、ディスクC:\がいっぱいになった場合)。
残念ながら、これはMSIから実行することは不可能であるため、手動で実行する必要があります。
必要がある
これは、スクリプトから実行する方法を示しています(たとえば、昇格されたコマンドラインで完全な管理者権限を使用して実行する必要があります)。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で[データの削除]を選択した場合でも、アンインストール時に新しいデータディレクトリは削除されません。