zoukankan      html  css  js  c++  java
  • SELinux导致PHP连接MySQL异常Can't connect to MySQL server的解决方法

    原文摘自:http://www.jb51.net/article/52581.htm

    这篇文章主要介绍了SELinux导致PHP连接MySQL异常Can't connect to MySQL server的解决方法,有2种,一是设置允许,二是关闭SELinux

    一起奇怪的现象,一个最简单的测试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
     
    类似的还有samba服务也是有布尔值设置禁止了服务的开启
  • 相关阅读:
    java中&和&&
    java保留字
    最优路径算法合集(附python源码)(原创)
    十大经典排序算法(python实现)(原创)
    电子欠款单设想(原创)
    羽毛球友谊赛规则(附带程序)(原创)
    基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)
    lazy_import源码解析(原创)
    多线程的音频打标记的python实现(原创)
    关于塔防游戏的浅析(原创)
  • 原文地址:https://www.cnblogs.com/baichuanhuihai/p/8253502.html
Copyright © 2011-2022 走看看