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

PHP 無法連接 MySQL 排查:bind-address、遠程賬戶權限與 Socket 陷阱

     編輯:MySQL 綜合教學

現象

命令行 php script.php 正常查詢數據,但瀏覽器訪問同一腳本報錯卡在 MySQL 連接階段。

原因分析

  1. MySQL 默認只監聽 127.0.0.1。PHP 腳本若用遠程 IP(如 192.168.110.2)連接,需 MySQL 綁定 0.0.0.0 或具體內網 IP。
  2. root 遠程登權限缺失。本地 root 可登,遠程 root 預設被拒。

解決步驟

  1. 編輯 /etc/mysql/my.cnf,註釋 bind-address = 127.0.0.1,重啟 MySQL。
  2. 創建業務專用賬戶並授權:
CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password';
GRANT SELECT,INSERT,UPDATE,DELETE ON db_name.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
  1. PHP 代碼改用新賬戶連接:
$conn = new mysqli('192.168.110.2', 'app_user', 'strong_password', 'testDB', 3306);
  1. 若仍報 Can't connect to local MySQL server through socket,檢查 mysqli.default_socket 配置或在連接時顯式指定 host 為 IP 而非 localhost(localhost 會走 Unix socket)。

最佳實踐

  • 生產環境禁用 root 遠程登錄,最小權限原則創建業務賬戶。
  • PHP 連接字符串統一使用 IP 地址,避免 socket/tcp 混淆。
  • 啟用 MySQL 慢查詢日志、錯誤日志便於事後排查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved