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

时间:2016-07-22 14:39:28

标签: mysql ubuntu mariadb ubuntu-server

我刚刚使用apt-get dist-upgrade更新了MariaDB。现在它不再开始使用 service mysql start 了。

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

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

我无法弄清楚下一步该做什么。有什么指针吗?

7 个答案:

答案 0 :(得分:28)

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

ProtectHome=true

到:

ProtectHome=false

答案 1 :(得分:4)

Debian 8(Jessie)和9(Stretch)上更新后的情况相同。在" apt-get upgrade"命令

  • service mysql start

服务器无法启动并记录错误:

[警告]无法创建测试文件/home/johndoe/UserDatabases/mypcname.lower-test

解决方案是在文件 /lib/systemd/system/mariadb.service 中更改值:

ProtectHome=true

ProtectHome=false

如上所述。

答案 2 :(得分:4)

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

如果仍然无法运行,也许还运行sudo grep -Ri "protecthome" /lib/systemd/system在与mysql相关的文件中查找ProtectHome的其他实例

答案 3 :(得分:3)

@RedGiant是的,我解决了它。忘了在这里发帖。

显然在.1版本之后,您无法再从/ home运行SQL。可能有一种方法可以解决这个问题,但是没有找到它。

我可以从除/ home之外的任何位置运行MySQL。我做的是卸载/ home(我将SSD RAID安装到/ home)并将我的磁盘重新安装为/ ssd。在配置中更改了我的路径,它立即起作用。

我没有运行SELinux或Apparmor。

答案 4 :(得分:2)

Thomas的答案是正确的,但每隔几个月更新一次即可将其重置。因此,这是一个永久性的解决方案:

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

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

[Service]
ProtectHome=false

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

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

我遇到了与问题中提到的相同的问题。就我而言,我想将MariaDB数据目录移动到 / home / mysql 文件夹,但是在更改 my.cnf 文件后,MariaDB服务无法启动。 / p>

我在文件 /lib/systemd/system/mariadb.service

中进行了以下更改
ProtectHome=true to ProtectHome=false

它要求我在再次启动Mariadb服务时重新加载守护程序。但是,我已经重新启动服务器并启动了MariaDB服务,没有任何问题。