1. 程式人生 > 資料庫 >ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

錯誤資訊:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

出現問題原因:

有可能是 my.cnf 配置檔案中設定了 [mysqld] 的引數 socket ,而沒有設定[client]的引數socket

mysql.sock 檔案有什麼用:

mysql 支援 socket 和 TCP/IP 連線。那麼 mysql.sock 這個檔案有什麼用呢?連線localhost通常通過一個Unix域套接字檔案進行,一般是/tmp/mysql.sock。如果套接字檔案被刪除了,本地客戶就不能連線。/tmp 資料夾屬於臨時檔案,隨時可能被刪除。

1.TCP 連線(如果報錯 /tmp/mysql.sock,你可以嘗試這種方式連線)

mysql -uroot -h 127.0.0.1 -p

2.socket 連線

mysql -uroot -p

解決方式:

新增 [client] 配置項,如下所示

配置前:(配置 [client] 前,會報錯'/tmp/mysql.sock' (2))

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

配置後:(配置 [client] 後,重啟 mysql服務)

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock(跟這個socket路徑一樣)
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
port=3306
socket=/var/lib/mysql/mysql.sock

end,本文結束,希望對大家有所幫助!