我刚刚使用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
我无法弄清楚下一步该做什么。有什么指针吗?
答案 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"命令
服务器无法启动并记录错误:
[警告]无法创建测试文件/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服务,没有任何问题。