MySQL連接時找不到mysql.sock文件的原因及解決辦法

MySQL是目前最流行的關係型數據庫管理系統之一,由於其開放源碼等特性,不少企業網站開發選擇MySQL作爲數據庫。MySQL數據庫連接時有時會發現找不到mysql.sock文件,從而導致數據庫連接失敗,那麼出現這種情況是什麼原因呢?該如何解決?

MySQL連接有兩種方式,一種是通過TCP/IP,就是用-h參數指定要連接的mysqlseeI的IP,另一種是套接字socket,在這裏就是mysql.sock文件。

相關閱讀:《MySQL 8.0使用教程:如何連接到服務器》

當我們的客戶端與數據庫服務器(mysqlsee)在同一臺機器上時,就通過該文件來連接數據庫。有時在連接MySQL數據庫時報錯:Cn ̺t connect to locl MySQL see though socket ̺/tmp/mysql.sock ̺(2) “;出現找不到mysql.sock文件主要是有以下四種原因。

、MySQL服務沒啓動;

2、sock文件路徑設置錯誤 ;

3、sock文件所在目錄的權限問題;

4、mysql.sock文件直接丟失了。

解決方法:

)檢查服務有沒有啓動。

2)在my.cnf文件中查看socket參數指定的路徑,查看這個路徑有沒有訪問權限。

3)到那個路徑下去看一下到底有沒有這個mysql.sock文件,如果該路徑下沒有sock文件,我們先用find命令找出這個文件的位置,如果find也找不到,重啓一下mysql服務即可,會自動生成一箇。然後把他複製到soctek參數指定的路徑下去。或者建立一箇軟連接,這也是比較推薦的方法,比如這個文件在//lib/mysql.sock,socket參數指定的路徑是/tmp/mysql.sock。

我們就可以這樣創建:

ln -s //lib/mysql.sock /tmp/mysql.sock

創建完之後,再嘗試連接數據庫。

另外需要注意的是,mysql.sock文件默認是在/tmp下,數據庫啓動的時候,系統也默認去這個文件下找mysql.sock文件,但是/tmp目錄有時會被某個定時任務給清除,那麼我們可以給/tmp目錄加一箇sticky權限,保護其不被刪除,chmod +t /tmp即可,使得/tmp下的文件只能由文件所有者和oot用戶才能刪除。

4)如果還是報那個錯誤,我們可以選用TCP/IP來連接。

mysql -uoot -h 27.0.0. -p