Mysql 不啟動 mysqld.sock 失去
重新啟動伺服器後,除了“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”而失敗,
- 我將 my.cnf 中“bind ip”參數中的 IP 地址更改為 localhost
- 以安全模式啟動mysql。
- 以正常模式重新啟動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 程序的使用者必須可以訪問套接字所在的目錄。