MySql/MariaDB 無法更改 Debian 9.1 伺服器上的預設數據目錄
我在將 Maria DB 的預設數據目錄移動到另一個分區時遇到問題,這似乎很常見,但我盡我所能但沒有運氣。
apt-get install mysql-server
Mysql在 Debian 9.1 (stretch) 伺服器上安裝為 Mariadb 10.1.26,帶有預設的 debian 包 ( ),mysqld -v
返回mysqld 10.1.26-MariaDB-0+deb9u1
Default_mysql_datadir :
/var/lib/mysql
新的_mysql_datadir:
/home/mysql
/var/lib/mysql
安裝到 "/
" (/dev/md3
)
/home/mysql
安裝到 "/home
" (/dev/md4
)我試過的
# systemctl stop mysql # mv /var/lib/mysql /home
更改 /etc/mysql/my.cnf 中的數據目錄
datadir = /home/mysql
檢查權限/權限是否正常
# chown -R mysql.mysql /home/mysql
apparmor未在系統上安裝或執行,儘管該
/etc/apparmor.d/usr.sbin.mysqld
文件存在以下規則:/home/mysql/ r, /home/mysql/** rwk,
我什至嘗試創建和清空引用此錯誤
/var/lib/mysq
的文件夾但是當我開始時,我總是會遇到同樣的錯誤:
# systemctl start mysql [Warning] Can't create test file /home/mysql/<user>.lower-test #007/usr/sbin/mysqld: Can't change dir to '/home/mysql/' (Errcode: 13 "Permission denied") 2017-09-07 0:16:59 140119808397888 [ERROR] Aborting mariadb.service: Main process exited, code=exited, status=1/FAILURE Failed to start MariaDB database server. mariadb.service: Unit entered failed state. mariadb.service: Failed with result 'exit-code'.
有什麼建議嗎?
謝謝
您必須**
ProtectHome=false
**在 systemd 配置文件中設置才能將您的 datadir 移動到/home
目錄。根據 Debian 政策規則,您應該在自定義文件中設置此選項值,例如**
/etc/systemd/system/mariadb.service.d/YOUR_CUSTOM_FILE.conf
**包含:[Service] # Prevent accessing /home, /root and /run/user ProtectHome=false
然後重新載入 systemctl 守護程序:
systemctl daemon-reload
之後,您應該能夠將 MariaDB datadir 從 更改
/var/lib/mysql
為/home/mysql
.
此白名單位於
/etc/systemd/mariadb.service.d/whatever.conf
:[Service] ReadWritePaths=/home/mysql
可能是另一種解決方案,但如果沒有帕亞特先生的智慧,我不會找到它。