Mysql

MySql/MariaDB 無法更改 Debian 9.1 伺服器上的預設數據目錄

  • February 20, 2019

我在將 Maria DB 的預設數據目錄移動到另一個分區時遇到問題,這似乎很常見,但我盡我所能但沒有運氣。

apt-get install mysql-serverMysql在 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

可能是另一種解決方案,但如果沒有帕亞特先生的智慧,我不會找到它。

引用自:https://dba.stackexchange.com/questions/185302