在玩树莓派上的home assistant。在安装数据库的时候一切顺利,但启动数据库的时候死活启动不起来,看日志是创建临时文件失败。这里我把默认的数据库位置改到后home目录下面,单独在ha的目录里面创建了一个data目录来挂载一块u盘,让数据库文件和tts的临时文件都在u盘上。
分析过程如下:
1.首先查看是否有权限,因为目录是mysql_install_db 命令创建的,权限没有问题。而且测试了下,目录写也没有问题。
2.怀疑selinux的问题,需要setenforce 0,但我使用的树莓派的系统压根没有这玩意。
3.apparmor的问题,说/etc/apparmor.d/usr.sbin.mysqld里面限制了目录。看果然有这个文件,但文件第一句也写的很明确,默认是没有开启的,而且这个文件也确实没有任何配置。
4.国内网站上都是一个人写的文章,就提到了上面的两点。再看看国外的文章吧,还是stackoverflow牛,
To run MariaDB SQL from /home, in the file /usr/lib/systemd/system/mariadb.service, just change :
ProtectHome=true
to :
ProtectHome=false
还有这么奇葩的设定,把目录保护了?立马查看相应文件(目录不一定是这个),果然不止home被限制,还有/root /run/user,修改下后systemctl重启msyql服务,还是报错,不过是提示mariadb.service修改了,需要重新加载并给出了命令systemctl daemon-reload,执行后再重启,数据库服务终于正常了。