FAQ系列 | 启用SELinux后,PHP连接MySQL异常-阿里云开发者社区

开发者社区> 科技小先锋> 正文

FAQ系列 | 启用SELinux后,PHP连接MySQL异常

简介:
+关注继续查看

同事报告一起奇怪的现象,一个最简单的测试PHP代码,在测试环境很正常,但是在正式环境下,无论用何种方式(tcp/ip、unix socket)都无法连接mysql。
我协助查看了下,确实如此,无论是指定IP、端口的tcp/ip方式连接,或者是用unix socket方式连接,报错信息都类似:

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


本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/1879758,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL 异常--1045
异常 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y ES) 异常图片.
669 0
pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下
首先下载instantclient 可以到oracle官网下载,要注册账号,一定要下对应版本的,要不然不成功, 10G,11G版的,我已经传上来了,免费下载:正在上传中,稍等 配置文件tnsnames.
741 0
mysql 查询结果异常分析
--- title: MySQL · mysql · mysql 查询结果异常分析 author: 张远 --- # 现象 查询条件类型变化后,查询出了不正确的结果。 ``` create table t1(id int primary key, a varchar(50) DEFAULT NULL, key idx_a(a)) engine=innodb; sho
1655 0
MySQL启用SSD存储
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/48049127 MySQL启用SSD存储 作者:chszs,版权所有,未经同意,不得转载。
533 0
PHP连接数据库学习手册
范例 1: Select 指令 任务:连结到 Access 的 Northwind DSN,然后在每一列显示头2个字段。(Northwind 北风数据库,在ODBC设定的DSN,是Access的标准范例数据库) 在这个范例中,我们建立一个 ADOConnection 对象,它代表了和数据库的连结。连结是以 PConnect 函数来初始化的,然后会持续的连结着。任何时候我们要
1032 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载