繁体   English   中英

MySQL SELinux冲突Fedora 19

[英]MySQL SELinux conflict Fedora 19

我已经在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进入许可模式?

完整的答案取决于您的服务器配置以及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中的/usr/share/selinux/devel/Makefile才能将其转换为.pp文件。

欲获得更多信息:

如果你是一个更图形化的类型,这里还有上编制的政策有很大的文章由红帽杂志在这里 还有一篇很棒的博客文章,可以在这里指导您创建策略。 请注意,强调使用/ usr / share / selinux / devel / Makefile来编译自己的.te,.fc和.if文件(用M4编写的selinux源代码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM