我已经在 CentOS 7 服务器上安装了 MySQL 5.6,并且正在尝试将错误日志位置从默认更改/var/log/mysql.log
为/var/log/mysqld.err
.当我使用默认文件位置时,MySQL 运行正常,但当err 13 - Permission Denied
我尝试更改日志文件位置时,systemd 服务失败。我确保设置文件访问权限和所有者/组并使用以下命令重新启动服务:
chown mysql:mysql /var/log/mysqld.err
chmod 640 /var/log/mysqld.err
systemctl daemon-reload
systemctl restart mysql
但当 mysqld 服务尝试将输出记录到/var/log/mysqld.err
.
我什至尝试将文件访问权限设置为/var/log/mysqld.err
777。在这种情况下,mysqld_safe
当我手动运行脚本时,该脚本能够成功写入日志文件,但即使我允许任何用户编辑该文件,systemd 服务仍然失败。
除了文件访问权限和所有者/组设置之外,是否还有其他设置限制 systemd 服务可以访问的文件?附带说明一下,我没有对从 MySQL 存储库安装的服务脚本进行任何修改,也没有为该服务添加任何覆盖文件。
答案1
AB 关于 SELinux 权限问题的说法是正确的。新文件需要一个mysqld_log_t
类型。我通过更改类型解决了该问题:
chcon -t mysqld_log_t /var/log/mysqld.err