今天在服務里使用mysql時出現了一個奇怪的問題,就是突然找不到了mysql。
我一開始以為是mysql服務沒起來,于是就去查看服務狀態:
# 查看mysql服務狀態 service mysql status # 結果發現mysql服務已經在運行了 mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-07-18 20:36:33 CST; 8s ago Main PID: 17000 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 4302) Memory: 282.3M CGroup: /system.slice/mysql.service └─17000 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
看來服務是正常的,那么問題出在哪里呢?
于是我想到了試試登錄mysql看看能不能連接成功,結果連接失敗,出現了以下錯誤:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
這個錯誤的意思是找不到mysql服務所用的socket文件,但前面我們已經發現mysql服務是正常運行的,說明socket文件確實是不存在。
通過查找資料,我發現可能是mysql服務啟動時沒有自動創建socket文件的原因。于是我手動創建了一個socket文件:
# 創建mysql的socket文件夾 sudo mkdir -p /var/run/mysqld # 修改mysql文件夾的權限為mysql sudo chown mysql:mysql /var/run/mysqld # 創建mysql的socket文件 sudo touch /var/run/mysqld/mysqld.sock # 修改mysql的socket文件權限為mysql sudo chown mysql:mysql /var/run/mysqld/mysqld.sock
然后重新啟動mysql服務,問題就解決了。
盡管問題看起來比較簡單,但找到原因還是需要花費一定的時間,希望這篇文章能幫到有類似問題的人。