報錯
當我使用命令 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 得命令,我們都記得需要重啟才能生效。
