PHP MySQL mysql.sock的问题

SQLSTATE[HY000] [2002] No such file or directoryphp

缘由是找不到mysql.sock这个文件。。通常出现的症状就是能用ip链接mysql.但不能使用localhost链接本机的mysqlmysql

解决方法:sql

find / -name ‘mysql.sock’ 查找一下本机这个文件在哪里数据库

修改php.ini文件里面:apache

mysql.default_socket = /tmp/mysql.sock
pdo_mysql.default_socket= /tmp/mysql.sock
mysqli.default_socket =/tmp/mysql.sock
使用mysqld引擎的数据库应修改成以下设置
mysql.default_socket = /tmp/mysqld.sock
pdo_mysql.default_socket= /tmp/mysqld.sock
mysqli.default_socket =/tmp/mysqld.socksocket

若是你不知道本身使用的是mysql.sock仍是mysqld.sock文件,或者不知道mysql_socket文件的位置,打开phpinfo() 函数信息页面找到PHP扩展中MYSQL扩展所在位置,找到里面的MYSQL_SOCKET对应的路径值复制出来便可函数

再看一下mysql里面这个变量的位置:

#mysql -u root -pphp-fpm

mysql>show variables like '%sock%';spa

+-----------------------------------------+---------------------------+orm

| Variable_name                           | Value                     |

+-----------------------------------------+---------------------------+

| performance_schema_max_socket_classes   | 10                        |

| performance_schema_max_socket_instances | -1                        |

| socket                                  | /var/mysql/mysql.sock |

+-----------------------------------------+---------------------------+

3 rows in set (0.00 sec)

若是不socket的位置和你实际位置不同。可使用ln命令进行连接一下

例如:ln -s /tmp/mysql.sock /var/mysql/mysql.sock

 

修改完成后 重启apache 或者NGINX下重启php-fpm 便可解决问题

注:实际上Yii2所使用的PDO连接数据库,之修改设定pdo_mysql.default_socket 一项的配置文件路径便可,但考虑到后续使用和其余一些应用场合,就索性连同mysql,mysqli的socket路径一同设置修改了(修改设置路径地址 必须为mysql_socket所在实际文件路径地址,不然将致使PHP没法正常连接使用MYSQL数据库)……

相关文章
相关标签/搜索