方永、南天紫云

道亦有道

php程序連接MySQL时只能127.0.0.1而localhost無法連接的問題
作者 vinoca 發布於 2014年06月19日

改用127.0.0.1可以連接,host改爲localhost時無法連接

首先查看用戶:

SELECT host,userassword FROM mysql.user WHERE user='root';

再查看權限:

show grants for root@localhost;

沒有問題。

localhost解析是否正常:

ping localhost

同樣正常。

用mysql的客戶端程序 mysql 連接:

mysql -h localhost -u root -p

提示沒有權限,在 /etc/my.cnf 中增加:

[client]
  socket= /tmp/mysql.sock

可以連接,那麼php無法連接是否與此有關?在stackoverflow看到一些提示,說是127.0.0.1與localhost的不衕之處在于localhost會使用 UNIX domain socket 連接,幷受到 /etc/php.inimysql.default_socketpdo_mysql.default_socket 的影響,於是在 /etc/php.ini 中配置:

[Pdo_mysql]
  pdo_mysql.default_socket=/tmp/mysql.sock

OK.