我正在设置一个复制服务器,当我第一次尝试启动mysql服务时,它失败了:
[root@ravioli mysql]# service mysqld start
MySQL Daemon failed to start.
Starting mysqld: [FAILED]
[root@ravioli mysql]# tail /var/log/mysqld.log
151013 13:41:27 [ERROR] Plugin 'InnoDB' init function returned error.
151013 13:41:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
/usr/libexec/mysqld: File '/databases/mysql/mysql_slow_queries.log' not found (Errcode: 13)
151013 13:41:27 [ERROR] Could not use /databases/mysql/mysql_slow_queries.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
151013 13:41:27 [ERROR] Unknown/unsupported storage engine: InnoDB
151013 13:41:27 [ERROR] Aborting
151013 13:41:27 [Note] /usr/libexec/mysqld: Shutdown complete
151013 13:41:27 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
我已确认用户mysql
可以看到并写入/databases/mysql/mysql_slow_queries.log
。
然后我检查了getenforce
,发现它被设置为Enforcing
。
如何配置MySQL以与SELinux完美配合?
3条答案
按热度按时间vshtjzan1#
所有我需要的是删除两个文件,这是:
和
然后返回启动mysql,一切正常
ki1q1bka2#
这解决了我的问题:
j91ykkif3#
好的,这实际上是much easier than expected。
默认情况下,
SELinux
是Enforcing
,这可以防止对文件系统的意外写入。我只需要告诉SELinux,MySQL可以写入非标准目录。要安装
semanage
,请使用以下命令:现在再次运行该命令。这可能需要一些时间...
通过查看以下配置文件,检查是否为该新目录配置了SELinux:
可以添加其他目录,例如,如果您在某个地方有一个专用的tmp目录。
再次检查配置:
最后,使用
restorecron
更新权限在我的设置中,
现发布:
贝内。