MySQL SELinux冲突Fedora 19

时间:2013-09-04 04:25:23

标签: mysql fedora pid selinux

我在我的F19上成功安装了MySQL 5.6。虽然安装成功,但我无法启动mysql服务。

我跑的时候

service mysql start

它返回以下错误:

Starting MySQL..The server quit without updating PID file (/var/lib/mysql/sandboxlabs.pid). 

我禁用了SELinux(许可模式),服务顺利启动。但我做了一些关于禁用SELinux的研究,发现禁用SELinux是一个坏主意。那么,有没有办法添加自定义MySQL策略?或者我应该将SELinux留给许可模式吗?

1 个答案:

答案 0 :(得分:1)

完整的答案取决于您的服务器配置以及您使用MySQL的方式。但是,修改SELinux策略以允许MySQL运行是完全可行的。在大多数情况下,可以使用少量shell命令执行此类操作。

首先查看/var/log/audit/audit.log。您可以使用audit2allow围绕日志消息本身生成权限授予策略。在Fedora 19上,此实用程序位于policycoreutils yum包中。

命令

    # grep mysql /var/log/audit/audit.log | audit2allow

...将输出需要编译的策略代码,以便允许在audit.log中阻止和记录的mysql操作。您可以查看此输出以确定是否要将此类权限合并到系统的策略中。它可能有点深奥,但你通常可以获得mysql运行所需的一些文件权限。

要启用这些更改,您需要将策略模块创建为已编译的模块:

    # grep mysql /var/log/audit/audit.log | audit2allow -M mysql

...将保存的明文代码输出到mysql.te,将编译后的策略代码输出到mysql.pp。然后,您可以使用semodule工具将其导入系统的政策。

    # semodule -i mysql.pp

完成此操作后,请尝试再次启动mysqld。您可能需要重复此过程几次,因为mysqld可能仍会因先前运行中未记录的某些新访问权限而动摇。这是因为服务器守护程序按顺序遇到这些权限检查,如果它在一个上跳过,它将不会遇到其他人,直到您允许访问初始权限。有耐心 - 有时你需要创建mysql1.pp mysql2.pp mysql3.pp ...等等。

如果您真的有兴趣将这些组合到一个统一的策略中,您可以将.te文件和“粘合”在一起以创建统一的.te文件。编译此文件只需要稍微多一些工作 - 您需要/usr/share/selinux/devel/Makefile中的Makefile才能将其转换为.pp文件。

了解更多信息:

如果你是一个更加图形化的类型,RedHat杂志还有一篇关于编制政策here的精彩文章。还有一篇很棒的博客文章将引导您完成策略here的创建。注意强调使用/ usr / share / selinux / devel / Makefile编译自己的.te,.fc和.if文件(用M4编写的selinux源代码)。