SELinux導(dǎo)致PHP連接MySQL異常Can't connect to MySQL server的解決方法
同事報(bào)告一起奇怪的現(xiàn)象,一個(gè)最簡單的測試PHP代碼,在測試環(huán)境很正常,但是在正式環(huán)境下,無論用何種方式(tcp/ip、unix socket)都無法連接mysql。
我協(xié)助查看了下,確實(shí)如此,無論是指定IP、端口的tcp/ip方式連接,或者是用unix socket方式連接,報(bào)錯(cuò)信息都類似:
無論如何修改MySQL的授權(quán),或者調(diào)整php.ini中關(guān)于MySQL的設(shè)置,或者修改MySQL的監(jiān)聽網(wǎng)口,都無法解決。
而如果用命令行人工連接MySQL,則一切正常。
問題看起來像是php(with apache)不被允許連接MySQL,但是防火墻也沒有限制。想來想去,唯有SELinux的因素會導(dǎo)致這個(gè)問題。
可以看到這里設(shè)置了httpd進(jìn)程的許可模式,再仔細(xì)看一下,有一個(gè)選項(xiàng):
httpd_can_network_connect --> off
現(xiàn)在明白了,原來是SELinux限制了httpd對外訪問的權(quán)限。將其開啟即可:
如果對SELinux不熟悉,也可以直接修改系統(tǒng)配置文件 /etc/sysconfig/selinux,全局關(guān)閉:
# 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
#把設(shè)置改為disabled
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
然后重啟操作系統(tǒng),即可生效。
或者,直接執(zhí)行命令,可在線生效:
[root@imysql~]# setenforce 0
setenforce: SELinux is disabled
相關(guān)文章
詳解如何對MySQL數(shù)據(jù)庫進(jìn)行授權(quán)管理
MySQL數(shù)據(jù)授權(quán)是指數(shù)據(jù)庫管理員通過設(shè)置權(quán)限,控制用戶對數(shù)據(jù)庫中的數(shù)據(jù)的訪問和操作能力,在MySQL中,每個(gè)用戶賬戶都有特定的權(quán)限,本文給大家介紹了如何對MySQL數(shù)據(jù)庫進(jìn)行授權(quán)管理,需要的朋友可以參考下2024-11-11
MySQL中having和where的區(qū)別及應(yīng)用詳解
這篇文章主要給大家詳細(xì)介紹了MySQL中having和where的區(qū)別以及他們的使用方法,文中有相關(guān)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下2023-06-06
MySQL深度分頁(千萬級數(shù)據(jù)量如何快速分頁)
后端開發(fā)中經(jīng)常需要分頁展示,個(gè)時(shí)候就需要用到MySQL的LIMIT關(guān)鍵字。LIMIT在數(shù)據(jù)量大的時(shí)候極可能造成的一個(gè)問題就是深度分頁。本文就介紹一下解決方法,感興趣的可以了解一下2021-07-07
5個(gè)常用的MySQL數(shù)據(jù)庫管理工具詳細(xì)介紹
本篇文章是對5個(gè)常用的MySQL數(shù)據(jù)庫管理工具進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
MySQL 5.7增強(qiáng)版Semisync Replication性能優(yōu)化
這篇文章主要介紹了MySQL 5.7增強(qiáng)版Semisync Replication性能優(yōu)化,本文著重講解支持發(fā)送binlog和接受ack的異步化、支持在事務(wù)commit前等待ACK兩項(xiàng)內(nèi)容,需要的朋友可以參考下2015-05-05

