Назад | Перейти на главную страницу

не может изменить mariadb datadir начиная с debian 9

Я проделал это 1000 раз на debian 8, но безуспешно с тех пор, как попробовал на debian 9.

Я хотел бы изменить datadir по умолчанию для mariadb, вот процесс из девственной виртуальной машины debian 9:

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

Как видите, ошибка Доступ запрещен некоторые темы говорят о приложение броня но этот не работает в списке процессов, и я ничего об этом не касался.

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

ничего не возвращает.

Я тоже не пользуюсь SELINUX ...

Спасибо за вашу помощь.

Проблема в том systemd служебный файл mariadb.service который установил

ProtectHome = true

по умолчанию. Этот параметр запрещает службе доступ к /домой, / корень и / запустить / пользователь каталоги.

Так что либо вы устанавливаете свой mysql данные в другое место или вы установите эту функцию на false.

Чтобы отключить эту функцию, лучше всего использовать systemctl edit mariadb который открывает редактор, определенный в переменной среды EDITOR. Просто положи

[Service]
ProtectHome = false

в этом редакторе. Сохранить, закрыть и переопределить файл /etc/systemd/system/mariadb.service.d/override.conf будет создан. После этого systemctl daemon-reload необходимо перечитать настройку. Начни свой сервис.