今天在測試服務器做調試的時候,遇到Mysql的啟動問題,好像是PID文件找不到了。
不科學啊,前幾天還好好的呀,我也沒怎么亂搞啊,然后一通百度,找到了幾個解決辦法。
1.有可能是已經存在mysql進程,多執行killall mysql,直到顯示 no process killed.
2.有可能是mysql的data目錄沒有權限,用 chown -R mysql:mysql /usr/local/mysql/data 和 chmod -R 755 /usr/local/mysql/data 重新賦權。
3.或者看下/etc/my.cnf里邊有指定data目錄有沒有問題,檢查下配置文件里有沒有錯誤的。
4.selinux要禁止,看看/etc/selinux/config,要這樣配置SELINUX=disabled.
-----------------------------------------------------------------------------------------------------------------------------------
試了試都不行,重啟還是失敗。於是我就看了下錯誤日志。
執行 cat /usr/local/mysql/data/021rjsh216086s.err
看到這個錯誤點,原因是無法在 /tmp目錄下創建文件,那么看看 /tmp目錄下的權限大小。
看到這里問題就確定了,果然是權限不夠啊。
執行 chmod 777 /tmp 就行了。
-------------------------------------------------------------------------------------------------------------------------
本來以為將tmp文件夾授權為777后,但發現又出現了新問題。如下圖所失,Error表示orders.idb這個文件打不開了,讀取不到orders的表空間。
下邊也給解決方法了。
①給文件加權限。
②將orders.odb這個文件刪除。
③vi /etc/my.cof 增加一行 innodb_force_recovery= 1
經過測試,②③執行均可以啟動數據庫,但是原來的數據,卻有點損失。所以說數據備份很重要。
但是數據庫設置innodb_force_recovery大於0后,可以對表進行select,create,drop操作,但insert,update或者delete這類操作是不允許的。所以還需要將數據導出來,
新建庫表,再把數據導入。
參考文章:
使用innodb_force_recovery解決MySQL崩潰無法重啟問題
MYSQL啟動后報:ERROR! The server quit without updating PID file錯誤的問題解決
[真正完美解決]InnoDB: Attempted to open a previously opened tablespace
Mysql無法啟動 InnoDB: Attempted to open a previously opened tablespace