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數據庫)……

相關文章
相關標籤/搜索