mysql命令登陸MySQL服務問題

MySQL UNIX 技術 安卓網hiapk 2017-05-23

mysql命令登陸MySQL服務問題

最近發現了一個問題:

mysql -u root -p  mysql -h localhost -u root -p

使用上面兩個命令登陸mysql服務的時候出現如下錯誤:

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

經過網上的一番查詢,思路大體都是創建一個mysql.sock的鏈接或者重新生成一個mysql.sock文件。

在手冊上查了一下,找到的解決方案如下:

// 自行指定socket文件 mysql -h localhost -S /var/lib/mysql/mysql.sock -u root -p   mysql -h 127.0.0.1 -u root -p  mysql -h www.example.com -u root -p  mysql -h localhost -u root --protocol = TCP -p

這些都可以解決問題。

具體原因是:

mysql命令如果沒有指定-h參數,默認使用localhost主機,連接到localhost服務mysql使用unix socket file, 即mysql.sock。但是mysql命令發現/tmp/mysql.sock與mysql服務使用的mysql.sock不一樣, 所以出現了上述錯誤。可以通過指定socket文件為mysql服務使用的mysql.sock,或者將/tmp/mysql.sock替換為mysql服務使用的mysql.sock。這個mysql.sock文件的位置可以通過如下命令找到:

netstat -ln | grep mysql

而如果-h的參數是ip或者域名,那麼mysql使用TCP/IP連接服務。所以換成127.0.0.1和www.example.com沒有問題。

還有就是通過--protocol參數指定連接的方式為TCP/IP。

後兩種解決方式根本沒有使用到mysql.sock。原理明白了才發現解決方法有很多。

問題雖然解決了,但是為什麼出現這種情況目前還不知道。

相關推薦

推薦中...