fft*_*fft 3 mysql mariadb debian
我在将 Maria DB 的默认 datadir 移动到另一个分区时遇到问题,这似乎很常见,但我尝试了一切,但没有运气。
Mysql 安装为 Mariadb 10.1.26,在apt-get install mysql-serverDebian 9.1 (stretch) 服务器上使用默认 debian 包 ( ),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
Run Code Online (Sandbox Code Playgroud)
更改 /etc/mysql/my.cnf 中的数据目录
datadir = /home/mysql
Run Code Online (Sandbox Code Playgroud)
检查权限/权限是否正常
# chown -R mysql.mysql /home/mysql
apparmor 未安装也未在系统上运行,尽管该/etc/apparmor.d/usr.sbin.mysqld文件存在且具有以下规则:
/home/mysql/ r,
/home/mysql/** rwk,
Run Code Online (Sandbox Code Playgroud)
我什至尝试创建和清空/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'.
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
谢谢
您必须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
Run Code Online (Sandbox Code Playgroud)
然后重新加载 systemctl 守护进程:
systemctl daemon-reload
之后,您应该能够将 MariaDB datadir 从 更改/var/lib/mysql为/home/mysql.