天天看點

倚天2自由世界無法連接配接mysql_完美解決MySQL通過localhost無法連接配接資料庫的問題

問題:一台伺服器的PHP程式通過localhost位址無法連接配接資料庫,但是如果設定為127.0.0.1則可以正常連接配接,連接配接其他資料庫伺服器也正常。MySQL的權限設定正确,且通過mysql指令行用戶端可以正常連接配接資料庫。

分析:這是典型的socket沒有正确設定的情況。

連接配接MySQL資料庫有兩種方式:TCP/IP(一般了解的端口的那種)和Unix套接字(一般叫socket或者sock)。大部分情況下,可以用localhost代表本機127.0.0.1,但是在MySQL連接配接時,二者不可混用,而且MySQL中權限設定中localhost與127.0.0.1也是分開設定的。當設定為127.0.0.1時,系統通過TCP/IP方式連接配接資料庫;當設定為localhost時,系統通過socket方式連接配接資料庫。

解決:首先要看本機MySQL的socket套接字檔案在哪裡,檢視指令是:

mysqld --verbose --help | grep socket

輸出結果顯示套接字檔案的位置,比如:這台伺服器顯示的是

socket /var/run/mysqld/mysqld.sock

然後修改php的配置檔案php.ini與之對應起來就好了。

找到這一項:

mysql.default_socket =

一般來說這一項都是空的,改成:

mysql.default_socket = /var/run/mysqld/mysqld.sock

這裡應寫上一步查詢到的檔案,根據你的情況設定。至此php配置就修改好了,如果是CLI(指令行)方式或者CGI方式的話,立即就生效,如果是FASTCGI方式,需要重新開機一下fastcgi程序。

以上這篇完美解決MySQL通過localhost無法連接配接資料庫的問題就是小編分享給大家的全部内容了,希望能給大家一個參考,也希望大家多多支援腳本之家。