天天看點

MySQL Error Code: 1017. Can't find file: xxx.frm

自己的一個雲伺服器好久不用, root密碼找不到了, 于是重置了一下. 重置時會提醒建議先關機, 否則強行關機可能會導緻問題. 然而沒有root密碼我也關不掉啊? 那就強關吧...

重置後果然出問題了, 部署的幾個小應用連接配接資料庫時全部報錯. 用資料庫工具查詢了一個表, 錯誤是Error Code: 1017. Can't find file: './saasadmin/t_dictionary.frm' (errno: 13 - Permission denied). 其中saasadmin是庫名, t_dictionary是表名. 錯誤提示是因為權限不足, 于是登入伺服器, 找到MySQL的datadir, 找到對應庫名的saasadmin目錄, cd進去ll指令列了一下. 結果發現讀寫權限全都變成root了, 不僅這一個表, 其他的表也是. 也就是查詢其他表也會報一樣的錯誤

那就先把權限改過來. 執行chown mysql.mysql * 權限又改回mysql使用者, 這下就正常了

不過随後又出現一個問題, 有幾個表在操作的時候會提示表不存在, Error Code: 1146. Table 'saasadmin.t_user' doesn't exist. 但是表明明在這啊. 考慮到資料庫預設引擎是MyISAM, 剛才的問題應該是強制關機導緻的, 是以先重新開機一下資料庫試試. service mysqld restart 運氣不錯, 重新開機後一切正常了

繼續閱讀