在新的服務器安裝了MySQL,結果使用mysql
mysql -hlocalhost -uroot -p
複製代碼
命令登陸的時候提示sql
Can’t connect to local MySQL server through socket /tmp/mysql.sock
複製代碼
發現那個目錄下沒有這個文件數據庫
一開始也沒當回事,由於我把localhost換成127.0.0.1 就好了bash
mysql -h127.0.0.1 -uroot -p
複製代碼
彷佛看起來第一種經過socket登陸的方式有問題。用第二種IP登陸的沒問題。服務器
而後今天在看書的時候瞭解到
鏈接MySQL數據庫的操做實際上是一個鏈接進程和MySQL數據庫實例之間的通訊,本質上是進程間通訊。而進程間通訊的方式則有管道命名管道、TCP/IP套接字、UNIX域套接字等。因此很明顯,我上面的第二種登陸方式就是TCP/IP套接字登陸方式。而第一種方式是Unix域套接字的方式,只能在Linux和Unix環境下使用。而後我去看了一下配置文件中socket
socket=/var/lib/mysql/mysql.sock
複製代碼
彷佛並無按照這個配置找,仍是去了/tmp/mysql.sock 下面找的。
PS:這裏也能夠使用-S參數手動指定socket文件,這樣也是能夠的。ui
mysql -hlocalhost -uroot -p -S /var/lib/mysql/mysql.sock
複製代碼
而後從網上發現了問題,spa
用rpm安裝的話,mysql客戶端sock默認是去讀取/var/lib/mysql/mysql.sock
採用源碼安裝,mysql客戶端sock默認是去讀取/tmp/mysql.sock
複製代碼
因此須要在配置文件中添加客戶端的socket配置code
[client] socket = /var/lib/mysql/mysql.sock 重啓便可。server