首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

SELinux 導致 PHP 無法連接 MySQL (Can't connect to MySQL server) 的排查與三種解決方案

     編輯:MySQL 綜合教學

SELinux 導致 PHP 無法連接 MySQL (Can't connect to MySQL server) 的排查與三種解決方案

線上環境 PHP (Apache + mod_php) 連接 MySQL 均報錯:

Could not connect: Can't connect to MySQL server on 'mysql.host' (13)

錯誤碼 13 = EACCES (Permission denied)。命令列 mysql -h ... 卻完全正常,防火牆、MySQL 授權、bind-address、skip-name-resolve 均已排查無誤。最終鎖定為 SELinux 限制 httpd 進程對外網絡連接。

核心排查命令

# 查看 httpd 相關布爾值
getsebool -a | grep -i httpd

# 關鍵項
httpd_can_network_connect --> off   # 禁止 httpd 發起網絡連接
httpd_can_network_connect_db --> off  # 禁止連接資料庫 (部分版本有此項)

三種解決方案 (按推薦度排序)

方案一:開啟對應布爾值 (最精準、持久、無需重啟)

# 永久生效 (-P 寫入磁碟策略)
setsebool -P httpd_can_network_connect=1
# 若存在 db 專項
setsebool -P httpd_can_network_connect_db=1

# 驗證
getsebool httpd_can_network_connect
# --> on

✅ 精準放行、持久化、無需重啟服務/OS,生產首選。

方案二:修改 SELinux 模式為 Permissive (臨時調試/兼容舊應用)

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
reboot

🛑 徹底失去 MAC 強制存取控制保護,僅限極端兼容性場景或非核心測試機。

驗證修復

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved