出现的问题:一个装有CentOs的VPS不知道为什么重启之后,出现网站无法连接数据库的现象:

Can't connect to MySQL server on 'www.zzgwt.com' (13)

此处域名也可以使IP,我习惯用域名直接连接数据库,因为重新解析域名后,不用再修改数据库配置了。但是本地通过数据库管理工具如:Navicat for MySql却是能够正常连接!
网上查了很多文章,发现又是SELinux(Linux上的强制访问控制安全模块)惹得祸,很想关闭它,但是据说他是系统被攻破后的最后一道防线,那就暂时记录此类问题的解决方案,以后有时间的话,好好研究一下这个SELinux!

此问题的原因是SELinux阻止httpd进程–httpd_can_network_connect_db 连接数据库–不管是哪种类型的数据库。

使用getsebool 查看此选项的状态

# /usr/sbin/getsebool httpd_can_network_connect_db

httpd_can_network_connect_db –> off

使用setsebool命令改变该布尔变量的状态,从而使得httpd进程能够访问数据库服务器:

#/usr/sbin/setsebool httpd_can_network_connect_db on

改变成功后,可以继续使用getsebool命令进行查看:

#/usr/sbin/getsebool httpd_can_network_connect_db

上述状态改变只是暂时性的,一旦系统重启,该变量状态将改变回初始状态,因此,可以使用如下命令永久性改变状态:

#/usr/sbin/setsebool -P httpd_can_network_connect_db on

如需关闭SELinux则可以执行以下操作
修改/etc/selinux/config SELINUX=enforcing 为 SELINUX=disabled

http://www.e800.com.cn/articles/2012/0114/501693_3.shtml 此网站有关于SELinux的详细说明,留下备查!

1 对 “PHP Mysql:Can’t connect to MySQL server on ‘ip’ (13) 的解决方案”的想法;

发表评论

电子邮件地址不会被公开。 必填项已用*标注