MariaDB не может запускаться после обновления: [Warning] Невозможно создать тестовый файл/home/mysql/beta.lower-test

Я только что обновил MariaDB, используя apt-get dist-upgrade. Теперь он больше не начнет использовать службу mysql start.

Однако я могу запустить его как root или сделать: sudo -u mysql mysqld_safe, после чего MariaDB запускается нормально. Папка /home/mysql принадлежит пользователю и группе mysql.

Я обнаружил, что в эту функцию входит ошибка: https://github.com/MariaDB/server/blob/7ff44b1a832b005264994cbdfc52f93f69b92cdc/sql/mysqld.cc#L9865

Я не могу понять, что делать дальше. Любые указатели?

Ответ 1

Чтобы запустить MariaDB SQL из /home, в файле /usr/lib/systemd/system/mariadb.service просто измените:

ProtectHome=true

to:

ProtectHome=false

Ответ 2

Такая же ситуация после обновления на Debian 8 (Jessie) и 9 (Stretch). После "apt-get upgrade" команда

  • служба mysql start

сервер не запускается и регистрирует ошибку:

[Предупреждение] Невозможно создать тестовый файл /home/johndoe/UserDatabases/mypcname.lower-test

решение заключается в изменении в файле /lib/systemd/system/mariadb.service значения:

ProtectHome=true

to

ProtectHome=false

как описано выше.

Ответ 3

@RedGiant да, я решил. Забыл здесь.

По-видимому, после выпуска .1 вы больше не можете запускать SQL из /home. Вероятно, есть способ обойти это, но не нашел.

Я могу запускать MySQL из любого места, кроме /home. То, что я сделал, было unmount/home (у меня был RAID-диск SSD, установленный в /home ) и снова установить мой диск как /ssd. Изменены мои пути в конфиге, и он сразу сработал.

Я не запускал SELinux или Apparmor.

Ответ 4

Обходной путь для этого - установка каталога в доме как /var/lib/mysql:

mount --bind /home/mysql/var/lib/mysql /var/lib/mysql

Ответ 5

В Debian 9 вам нужно изменить значение ProtectHome на false как в /lib/systemd/system/mariadb.service и /lib/systemd/system/[email protected] затем запустить sudo systemctl daemon-reload.

Возможно также запустите sudo grep -Ri "protecthome"/lib/systemd/system чтобы найти другие экземпляры ProtectHome в файлах, связанных с mysql, если это все еще не работает