1. 程式人生 > >MySql 報錯ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

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

在這裡插入圖片描述
MySql 報錯ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

這個錯是連結時報的錯,要連結必須啟動。修復的時候首先要啟動mysql。

首先來了解一下 mysql.sock的作用:

Mysql有兩種連線方式:
(1)TCP/IP
(2)socket
對mysql.sock來說,其作用是程式與mysqlserver處於同一臺機器,發起本地連線時可用。
例如你無須定義連線host的具體IP,只要為空或localhost就可以。
在此種情況下,即使你改變mysql的外部port也是一樣可能正常連線。
因為你在my.ini中或my.cnf中改變埠後,mysql.sock是隨每一次 mysql server啟動生成的。已經根據你在更改完my.cnf後重啟mysql時重新生成了一次,資訊已跟著變更。

那麼對於外部連線,必須是要變更port才能連線的。
mysql.sock的作用是server和client在同一臺伺服器,並且使用localhost進行連結的時候,就會使用socket來進行連線——僅此而已
也就是:為主機名為localhost建立的MySQL連線,該連線過程通過一個套接字檔案mysql.socket實現的。所以該檔案被刪後,用localhost使用者是連線不到MySQL伺服器的。

必須建立一條tcp/ip連線,即使用127.0.0.1而不是localhost作為-h的引數去連線MySQL伺服器,如:mysqladmin -h 127.0.0.1 -u root -p shutdown,強制地建立一條tcp/ip連線;
關閉MySQL伺服器,再重新以localhost為主機名啟動MySQL伺服器,它就會重新建立一個套接字檔案。

注意:mysql.sock是一個臨時檔案,啟動mysql後才會生成。
報錯的原因:MySQL將其放在/tmp目錄,而linux將其放在/var/mysql目錄。所以我們只需要建立一個軟連結,輸入以下兩個命令即可:
如果/var/下沒有mysql目錄,則需建立

建立目錄:sudo mkdir /var/mysql

建立軟連結:sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

如果提示: ln: creating symbolic link /data/mysqldata/mysql.sock' to/tmp/mysql.sock’: File exists
刪除之前的mysql.sock檔案