10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 236.9 kb
手册页(Zip)- 348.5 kb
信息(Gzip)- 3.4 mb
信息(邮政编码)- 3.4 mb
本手册节选

6.7.6 SELinux故障处理

对SELinux进行故障诊断通常包括将SELinux设置为允许模式、重新运行有问题的操作、检查SELinux审计日志中的拒绝访问消息,以及在问题解决后将SELinux设置为强制模式。

避免将整个系统置于允许模式使用setenforce,您可以只允许MySQL服务以允许的方式运行,只需将其SELinux域(mysqld_t)进入允许模式,使用semanage命令:

语义允许的-a mysqld_t

当您完成故障排除后,使用此命令将mysqld_t域返回强制模式:

语义允许-d mysqld_t

SELinux为被拒绝的操作写入日志/var/log/audit/audit.log.你可以通过搜索否认消息。

Grep“denied”/var/log/audit/audit.log

下面几节描述了可能遇到selinux相关问题的几个常见领域。

文件的上下文

如果MySQL目录或文件有错误的SELinux上下文,访问可能会被拒绝。如果将MySQL配置为读取或写入非默认目录或文件,则会出现此问题。例如,如果将MySQL配置为使用非默认数据目录,则该目录可能没有预期的SELinux上下文。

试图在非默认数据目录上使用无效的SELinux上下文启动MySQL服务会导致以下启动失败。

systemctl启动mysql。mysqld的service Job。服务失败,因为控制进程退出并带有错误代码。参见“systemctl status mysqld”。Service”和“journalctl -xe”。

在本例中,a否认消息被记录到/var/log/audit/audit.log

$> grep "denied" /var/log/audit/audit.log type=AVC msg=audit(1587133719.786:194): AVC: denied {write} for pid=7133 comm="mysqld" name="mysql" dev="dm-0" ino=51347078 scontext=system_u:system_r:mysqld_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=dir permissive=0

有关为MySQL目录和文件设置适当的SELinux上下文的信息,请参见第6.7.4节,SELinux文件上下文

端口访问

SELinux期望MySQL Server等服务使用特定的端口。修改端口而不更新SELinux策略可能导致业务失败。

mysqld_port_tport type定义MySQL监听的端口。如果您将MySQL服务器配置为使用非默认端口,例如3307端口,并且没有更新策略以反映更改,则MySQL服务无法启动:

$> systemctl start mysqld。mysqld的service Job。服务失败,因为控制进程退出并带有错误代码。参见“systemctl status mysqld”。Service”和“journalctl -xe”。

在这种情况下,将记录到拒绝消息/var/log/audit/audit.log

$> grep "denied" /var/log/audit/audit.log type=AVC msg=audit(1587134375.845:198): AVC: denied {name_bind} for pid=7340 comm="mysqld" src=3307 scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:unreserved_port_t:s0 tclass=tcp_socket permissive=0

有关为MySQL设置适当的SELinux端口上下文的信息,请参见章节6.7.5,SELinux TCP端口上下文.在启用使用未使用所需上下文定义的端口的MySQL特性时,也会出现类似的端口访问问题。有关更多信息,请参见章节6.7.5.2“为MySQL特性设置TCP端口上下文”

应用程序更改

SELinux可能不知道应用程序的更改。例如,新版本、应用程序扩展或新特性可能以SELinux不允许的方式访问系统资源,从而导致访问拒绝。在这种情况下,可以使用audit2allow实用程序创建自定义策略以允许在需要的地方进行访问。创建自定义策略的典型方法是将SELinux模式更改为允许模式,在SELinux审计日志中识别拒绝访问消息,并使用audit2allow实用程序创建自定义策略以允许访问。

的信息audit2allow实用程序,请参阅发行版的SELinux文档。10bet官方网站

如果您遇到MySQL的访问问题,并且您认为应该由标准的MySQL SELinux策略模块来处理,请在您的发行版的错误跟踪系统中打开错误报告。