自debian 9以来无法更改mariadb datadir

我已经在debian 8上做了这1000次,但是在debian 9上试了一下没有成功。

我想改变mariadb的默认datadir,这里是从一个处女debian 9 VM的过程:

apt-get update && apt-get install mariadb-server mariadb-client service mysql stop rsync -av /var/lib/mysql /home/ vi /etc/mysql/mariadb.conf.d/50-server.cnf grep -r datadir /etc/mysql/ /etc/mysql/mariadb.conf.d/50-server.cnf:datadir = /home/mysql [11:29:32]root@deb9: ~ # ls -la /home/mysql/ drwxr-xr-x 4 mysql mysql 4096 Sep 7 11:25 . drwxr-xr-x 3 root root 4096 Sep 7 11:25 .. -rw-rw---- 1 mysql mysql 16384 Sep 7 11:25 aria_log.00000001 -rw-rw---- 1 mysql mysql 52 Sep 7 11:25 aria_log_control -rw-r--r-- 1 root root 0 Sep 7 11:25 debian-10.1.flag -rw-rw---- 1 mysql mysql 12582912 Sep 7 11:25 ibdata1 -rw-rw---- 1 mysql mysql 50331648 Sep 7 11:25 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 Sep 7 11:25 ib_logfile1 -rw-rw---- 1 mysql mysql 0 Sep 7 11:25 multi-master.info drwx------ 2 mysql root 4096 Sep 7 11:25 mysql drwx------ 2 mysql mysql 4096 Sep 7 11:25 performance_schema service mysql start Sep 7 09:27:44 debian systemd[1]: Starting MariaDB database server... Sep 7 09:27:44 debian mysqld[15106]: 2017-09-07 11:27:44 140699007124032 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process 15106 ... Sep 7 09:27:44 debian mysqld[15106]: 2017-09-07 11:27:44 140699007124032 [Warning] Can't create test file /home/mysql/deb9.lower-test Sep 7 09:27:44 debian mysqld[15106]: #007/usr/sbin/mysqld: Can't change dir to '/home/mysql/' (Errcode: 13 "Permission denied") Sep 7 09:27:44 debian mysqld[15106]: 2017-09-07 11:27:44 140699007124032 [ERROR] Aborting Sep 7 09:27:44 debian systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE 

正如你所看到的,错误是Permission拒绝了一些线程谈到应用程序装甲,但是这个没有在processlist上运行,我也没有碰到任何有关它的东西。

 grep -r maria /etc/apparmor grep -r mysql /etc/apparmor 

什么也不返回

我也不使用SELINUX …

谢谢你的帮助。

问题是已设置的systemd服务文件mariadb.service

 ProtectHome = true 

默认。 此设置可防止服务访问/ home/ root/ run / user目录。

所以要么你将你的mysql数据安装到不同的位置,要么将这个特性设置为false

要禁用此function,最好使用systemctl edit mariadb ,它打开在环境variablesEDITOR定义的EDITOR 。 刚刚放

 [Service] ProtectHome = false 

在那个编辑器里 保存并closures,将创build覆盖文件/etc/systemd/system/mariadb.service.d/override.conf 。 之后,需要systemctl daemon-reload才能重新读取设置。 开始你的服务。