天天看點

MYSQL: PHP無法連接配接遠端mysql的原因

 php程式連接配接mysql隻能使用localhost,不能使用127.0.0.1

問題:php程式連接配接mysql隻能使用localhost,不能使用127.0.0.1

系統環境:centos5.5 64位系統  mysql 版本 5.0.77 php版本 5.2.17

以下為我解決問題的過程:

1、根據出錯的提示資訊“Warning: mysql_connect() [​​function.mysql-connect​​]: Can't connect to MySQL server on '127.0.0.1'”  使用google搜尋 mysql_connect 有人說是可能mysql_connect這個函數被禁用了,使用其它的連接配接,測試過不行。

2、使用google搜尋mysql能用localhost連接配接,不能使用127.0.0.1連接配接,結果大部分人的解決辦法是:

  • 修改my.cnf檔案,去掉skip_networking,bind_address=127.0.0.1,重新開機mysql 故障依舊。
  • 權限問題,grant all privileges on *.* to 'root'@'127.0.0.1' identified by '密碼';   然後flush privileges;  故障依舊。
  • 修改/etc/hosts檔案,添加127.0.0.1  localhost 項,故障依舊。

3、檢視apache錯誤日志,發現隻記錄了檔案不存在之類的日志資訊,未發現和通路mysql資料連接配接檔案相關的項目。

4、檢視mysql的日志,未發現相關的連接配接項目。

5、最後我想起來要檢視一下系統日志 /var/log/messages 資訊太多,清理之:  echo "" > /val/log/messages 然後通路 資料連接配接測試檔案。發現了如下資訊:

Nov 30 10:18:49 localhost setroubleshoot: SELinux 正在阻止 http 守護程序連接配接到網絡端口 3306 For complete SELinux messages. run sealert -l a214e214-c710-4c84-9eb

2-12764f4b27de

結果就很明顯了,是selinux闖的禍,關閉selinux測試一下“ /usr/sbin/setenforce 0 立刻關閉 SELINUX  ”  資料庫連接配接一切正常。

最後得出一個結論,請大家在安裝伺服器的時候,一定要selinux給關閉掉。下面給出方法:

如何關閉SeLinux

1、快速關閉SElinux,使用如下指令就可以:

/usr/sbin/setenforce 0 立刻關閉 SELINUX

/usr/sbin/setenforce 1 立刻啟用 SELINUX

2、加到系統預設啟動裡面

echo "/usr/sbin/setenforce 0" >> /etc/rc.local

3、可以編輯配置檔案達到同樣的目的

vi /etc/selinux/conf

set SELINUX=disabled

總結:(我的作業系統:centos8.4)PHP無法連接配接遠端的mysql原因是,selinux阻礙了php連接配接遠端mysql,關閉selinux即可。關閉selinux的方法:[root@centos test]# vim /etc/selinux/config  , SELINUX=disabled  。