首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

解決 PHP 無法連接本地 MySQL 伺服器的 Socket 錯誤

     編輯:MySQL 資料庫相關知識

問題現象

在測試 PHP 連接 MySQL 時,雖然命令列下使用 mysql -u root -p 可以正常登入資料庫,但執行 PHP 腳本卻報錯:

Can't connect to local MySQL server through socket '/tmp/mysql.sock'

測試用的 PHP 程式碼如下:

<?php
$link = mysql_connect('localhost', 'root', 'zz') or die(mysql_error());
mysql_select_db('test') or die('no db');
mysql_query('SET NAMES utf8');
echo 99;
?>

原因分析

這個錯誤通常是因為 PHP 嘗試通過 Unix Socket 文件 /tmp/mysql.sock 連接 MySQL,但該 Socket 文件不存在、路徑不匹配,或是權限不足導致無法讀寫。

解決方案

通過調整 MySQL 相關目錄的擁有者與權限,確保 Socket 文件能被正確建立與存取。具體執行以下指令(請根據實際安裝路徑調整):

chown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
chgrp -R mysql /usr/local/mysql/bin
chgrp -R mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chown -R root /var/lib/mysql/mysql
chgrp -R mysql /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql
chown -R root /var/lib/mysql/mysql/*
chgrp -R mysql /var/lib/mysql/mysql/*
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a

補充建議

  • 若問題持續,檢查 my.cnf 中的 socket 參數是否與 PHP 設定一致。
  • 可在 PHP 程式中改用 127.0.0.1 代替 localhost,強制使用 TCP/IP 連接而非 Socket。
  • 確認 MySQL 服務已正常啟動,且防火牆未阻擋 3306 埠。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved