pear的DB模块出现: connect failed Can’t connect to local MySQL server through socket

DB Error: connect failed Can’t connect to local MySQL server through socket “/tmp/mysql.sock”

首先要看本机MySQL的socket套接字文件在哪里,

mysqld --verbose --help | grep socket

得到也是/tmp/mysql.sock

如果出现不一致时,修改php.ini

找到这一项:

mysql.default_socket =

一般来说这一项都是空的,改成:

mysql.default_socket = /tmp/mysql.sock

在这里两者是一致,但是还是出现上述提示。进行下列步骤:

  1. 通过mysql命令行客户端可以正常连接数据库。
  2. PHP程序通过localhost地址无法连接数据库,但是如果设置为127.0.0.1则可以正常连接。

 

那么,我们来复习:
连接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方式连接数据库。

 

所以这里我们直接把localhost修改成127.0.0.1,解决这个问题

发表评论