设为首页 加入收藏

TOP

启用SELinux后PHP远程连接MySQL异常
2017-02-28 08:15:54 】 浏览:7168
Tags:启用 SELinux PHP 远程 连接 MySQL 异常

一个最简单的测试PHP代码,在测试环境很正常,但是在正式环境下,无论用何种方式(tcp/ip、unix socket)都无法连接mysql。?


?Could not connect: Can't connect to MySQL server on 'MYSQL.SERVER' (13)?
无论如何修改MySQL的授权,或者调整php.ini中关于MySQL的设置,或者修改MySQL的监听网口,都无法解决。?
而如果用命令行人工连接MySQL,则一切正常。?
?
问题看起来像是php(with apache)不被允许连接MySQL,但是防火墙也没有限制。想来想去,唯有SELinux的因素会导致这个问题。?
?
$ getsebool -a|grep -i httpd?
可以看到这里设置了httpd进程的许可模式,再仔细看一下,有一个选项:?
?
$ getsebool -a|grep -i httpd_can_network_connect?
$ httpd_can_network_connect --> off?
现在明白了,原来是SELinux限制了httpd对外访问的权限。将其开启即可:?
?
setsebool -P httpd_can_network_connect=1?
如果对SELinux不熟悉,也可以直接修改系统配置文件 /etc/sysconfig/selinux,全局关闭:?
?
# This file controls the state of SELinux on the system.?
# SELINUX= can take one of these three values:?
#? ? enforcing - SELinux security policy is enforced.?
#? ? permissive - SELinux prints warnings instead of enforcing.?
#? ? disabled - No SELinux policy is loaded.?
#SELINUX=enforcing?
#把设置改为disabled?
SELINUX=disabled?
# SELINUXTYPE= can take one of these two values:?
#? ? targeted - Targeted processes are protected,?
#? ? mls - Multi Level Security protection.?
SELINUXTYPE=targeted?
然后重启操作系统,即可生效。?
或者,直接执行命令,可在线生效:?
?
[root@imysql~]# setenforce 0?
setenforce: SELinux is disabled?


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL主从复制出现Slave_IO_Runni.. 下一篇MySQL主从复制原理及实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目