Ubuntu

Mysql 不啟動 mysqld.sock 失去

  • September 25, 2021

重新啟動伺服器後,除了“mysql”外,一切正常啟動,我嘗試手動啟動它“ /etc/init.d/mysql restart”或用“ service mysql restart”啟動它,它失敗了

在日誌文件中它說:

Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

我檢查了那個路徑,但我沒有找到那個套接字文件,請指教?

我嘗試在“安全模式”下啟動 mysql 以創建 sock 文件和 pid 文件,但由於某些錯誤“bind”而失敗,

  1. 我將 my.cnf 中“bind ip”參數中的 IP 地址更改為 localhost
  2. 以安全模式啟動mysql。
  3. 以正常模式重新啟動mysql,一切正常。

要查找系統上的所有套接字文件,請執行:

sudo find / -type s

我的 Mysql 伺服器系統打開了套接字/var/lib/mysql/mysql.sock

找到打開套接字的位置後,將/etc/my.cnf包含套接字文件路徑的行添加或編輯到文件中:

socket=/var/lib/mysql/mysql.sock

有時,啟動命令行執行檔的系統啟動腳本會指定一個標誌--socket=path。此標誌可能會覆蓋該my.cnf位置,這將導致在 my.cnf 文件指示的位置找不到套接字。然後,當您嘗試執行 mysql 命令行客戶端時,它會讀取 my.cnf 以查找套接字,但它不會找到它,因為它偏離了伺服器創建的位置。因此,除非您關心套接字所在的位置,否則只需將 my.cnf 更改為匹配即可。

如果您是 Linux 系統中的超級使用者,請根據上述內容執行以下操作:

kill -9 <pid_of_mysql>

或者有時你可以這樣做:

pkill -9 mysqld

完成此操作後,您可能需要在其中查找 pid 文件/var/run/mysqld/並將其刪除

確保您的套接字上的權限使得任何執行 mysqld 的使用者都可以讀取/寫入它。一個簡單的測試是打開它以完全讀/寫,看看它是否仍然有效:

chmod 777 '/var/run/mysqld/mysqld.sock'

如果這樣可以解決問題,您可以根據您的安全設置按需定制套接字的權限和所有權。

此外,執行 mysqld 程序的使用者必須可以訪問套接字所在的目錄。

參考:https ://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq

引用自:https://serverfault.com/questions/706166