【问题标题】:MySql/MariaDB cannot change default datadir on Debian 9.1 serverMySql/MariaDB 无法更改 Debian 9.1 服务器上的默认数据目录
【发布时间】:2025-12-14 21:45:01
【问题描述】:

我在将 Maria DB 的默认数据目录移动到另一个分区时遇到问题,这似乎很常见,但我尽我所能尝试但没有运气。

Mysql 在 Debian 9.1 (stretch) 服务器上安装为 Mariadb 10.1.26,带有默认的 debian 软件包 (apt-get install mysql-server),mysqld -v 返回 mysqld 10.1.26-MariaDB-0+deb9u1

Default_mysql_datadir : /var/lib/mysql

New_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,

我什至尝试创建并清空引用此 bug/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'.

有什么建议吗?

谢谢

【问题讨论】:

标签: mysql debian mariadb


【解决方案1】:

由 Systemd 启动的服务具有由 systemd 施加的额外文件系统限制。

应该可以为 systemd [Service] 指令 ProtectHome= 和/或 ProtectSystem= 和/或 ReadWritePaths= 提供值来解决此问题。

【讨论】:

    【解决方案2】:

    我也有类似的问题:

    当我启动 mysql 服务时,会显示一条消息:

    mariadb.service 的作业失败,因为控制进程以错误代码退出。 有关详细信息,请参阅“systemctl status mariadb.service”和“journalctl -xe”。

    如果我再次将 /etc/mysql/my.cnf 中的数据目录更改为默认值; np

    【讨论】: