更新后MariaDB无法启动:[警告]无法创建测试文件/home/mysql/beta.lower-test

Ben*_*nto 13 mysql ubuntu ubuntu-server mariadb

我刚刚使用apt-get dist-upgrade更新了MariaDB.现在它不再开始使用服务mysql启动了.

但是,我可以以root身份运行它或者执行:sudo -u mysql mysqld_safe然后MariaDB启动正常.文件夹/ home/mysql归mysql用户和组所有.

我发现在这个函数中抛出了错误:https: //github.com/MariaDB/server/blob/7ff44b1a832b005264994cbdfc52f93f69b92cdc/sql/mysqld.cc#L9865

我无法弄清楚接下来该做什么.有什么指针吗?

小智 34

要从/ home运行MariaDB SQL,请在文件/usr/lib/systemd/system/mariadb.service中更改:

ProtectHome=true
Run Code Online (Sandbox Code Playgroud)

至 :

ProtectHome=false
Run Code Online (Sandbox Code Playgroud)

  • 在ubuntu 17.04中,该文件似乎已移到/ lib/systemd/system / (4认同)
  • 对于debian 9,该文件位于/etc/systemd/system/multi-user.target.wants/mariadb.service.然后在启动服务之前必须运行"systemctl daemon-reload" (4认同)
  • 这似乎有些时候被重置了。有什么想法可以防止这种情况吗? (2认同)
  • 这显然不再起作用了。Mariadb 今天早上刚刚更新,它完全忽略了 ProtectHome=false。 (2认同)

zui*_*uim 9

托马斯的答案是正确的,但每隔几个月就会更新一次。所以这是一个永久的解决方案:

使用systemctl edit mariadb创建文件overwritting的MariaDB的服务的默认设置。(在 debian 中,它位于/etc/systemd/system/mariadb.service.d/override.conf

设置 Thomas 在文件中更改的相同设置:

[Service]
ProtectHome=false
Run Code Online (Sandbox Code Playgroud)

使用systemctl daemon-reload重新加载systemctl配置。


Neo*_*Neo 7

在 debian 9 上,您需要在两者中将 ProtectHome 更改为 false /lib/systemd/system/mariadb.service /lib/systemd/system/mariadb@.service然后运行 ​​sudo systemctl daemon-reload。

sudo grep -Ri "protecthome" /lib/systemd/system如果这仍然不起作用,也可以运行以在与 mysql 相关的文件中查找 ProtectHome 的其他实例


小智 5

解决方法是将 home 目录挂载为 /var/lib/mysql:

mount --bind /home/mysql/var/lib/mysql /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)