報錯
當我使用命令 mysql -uproot -proot
去連接 MySQL
服務器端的時候,發現了這個報錯
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
問題描述
當 MySQL
在 Linux 創建連接的時候,需要一個 mysql.sock
。它相當於一個配置文件。當你發現爆這個錯的時候,大約有兩種情況:
- 你沒有打開這個文件的權限。可以通過命令行修改權限
- 這個文件不存在,你可以自己去創建
如果上述情況都不同,建議去查看 MySQL
的日志文件。(如果你沒修改過的話,一般路徑是:/var/log/mysqld.log
)
解決方案
首先明確的是,無論是 MySQL
服務器還是客戶端,都需要連接這個文件。所以在這個文件里邊,肯定包括了 mysqld
和 mysql
的相關參數。
mysqld
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
重點是 socket 的值。我們將 mysqld
的數據指定了一個路徑,而其 sock
文件也將會在這個目錄下,但是記得需要保證您有該文件夾的權限。
mysql
[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
這個是 mysql
命令行及外來連接的一個配置。你會發現這個 sock
的路徑和上面的 mysqld
路徑是一樣的。那這樣就很好理解了,客戶端的連接配置肯定與服務端一樣,才能連接得上。
結尾
無論你是用了 mysql
還是 mysqld
得命令,我們都記得需要重啟才能生效。