2012-10-30 58 views
1

Iam試圖更改mariadb中的數據目錄,更改ini文件中的數據目錄路徑後,嘗試重新啓動服務,它無法啓動!顯示如下警告:更改mariadb中的datadirectory

> Error 1067: The process terminated unexpectedly 

在MySQL中,數據目錄更改工作正常。但是我不知道爲什麼它們不能和mariadb一起工作。

只有默認路徑是工作...

回答

2

我應該提到精彩系統內部的工具(例如將procmon),這不僅會在這種情況下,而且在許多其他國家是非常有益的。 Windows錯誤日誌是真正有用的第二個工具,如果你仔細看看它。知道你的工具

現在對於這種情況的具體建議 - 運行MariaDB服務的用戶應該能夠創建文件在datadir目錄中。默認情況下,MariaDB使用網絡服務,而MySQL使用本地系統(功能最強大的Windows用戶)。

此更改使MariaDB更安全(如果服務遭到黑客攻擊,影響更小),但不應期望NetworkService對任何目錄(如LocalSystem)具有讀寫訪問權限。

因此,要解決您的問題,您要麼使NetworkService的目錄可寫,要麼將服務用戶更改爲具有對目錄的讀寫權限的服務用戶。

0

最近有人問這個,我想出了另一個答案,涉及符號鏈接。我覺得這個解決方案可能是最簡單的,在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中選擇了「刪除數據」。