Iam試圖更改mariadb中的數據目錄,更改ini文件中的數據目錄路徑後,嘗試重新啓動服務,它無法啓動!顯示如下警告:更改mariadb中的datadirectory
> Error 1067: The process terminated unexpectedly
在MySQL中,數據目錄更改工作正常。但是我不知道爲什麼它們不能和mariadb
一起工作。
只有默認路徑是工作...
Iam試圖更改mariadb中的數據目錄,更改ini文件中的數據目錄路徑後,嘗試重新啓動服務,它無法啓動!顯示如下警告:更改mariadb中的datadirectory
> Error 1067: The process terminated unexpectedly
在MySQL中,數據目錄更改工作正常。但是我不知道爲什麼它們不能和mariadb
一起工作。
只有默認路徑是工作...
我應該提到精彩系統內部的工具(例如將procmon),這不僅會在這種情況下,而且在許多其他國家是非常有益的。 Windows錯誤日誌是真正有用的第二個工具,如果你仔細看看它。知道你的工具
現在對於這種情況的具體建議 - 運行MariaDB服務的用戶應該能夠創建文件在datadir目錄中。默認情況下,MariaDB使用網絡服務,而MySQL使用本地系統(功能最強大的Windows用戶)。
此更改使MariaDB更安全(如果服務遭到黑客攻擊,影響更小),但不應期望NetworkService對任何目錄(如LocalSystem)具有讀寫訪問權限。
因此,要解決您的問題,您要麼使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%
目前,這不會刪除在卸載新的datadir,即使您在MSI中選擇了「刪除數據」。