Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
今天在用一鍵安裝mysql的shell腳本安裝mysql-5.1.73軟件後發現mysql始終無法啟動,多次執行後依舊報錯,只能去查看error日誌,發現了如下的2個錯誤:
錯誤一:Fatal error: Can‘t open and lock privilege tables: Table ‘mysql.host‘ doesn‘t exist
錯誤二:InnoDB: Error: combined size of log files must be < 4 G
很明顯,錯誤一表示有系統表缺失,錯誤二表示redo log總大小超4GB啦。
經查詢https://bugs.mysql.com發現這是個BUG,而stackoverflow上的答復大致是:
刪除mysql安裝的相關文件如:/etc/my.cnf,/usr/bin/mysql,/var/lib/mysql以及$datadir文件夾等,然後重啟服務器,再次安裝即可。
鏈接在此:https://stackoverflow.com/questions/9083408/fatal-error-cant-open-and-lock-privilege-tables-table-mysql-host-doesnt-ex
照做後安裝成功,檢查自己的安裝腳本發現並無刪除$datadir文件夾的命令。
猜測是因為第一次wget下載的安裝包由於網絡原因出了點小意外,導致第一次生成的data文件下的系統表空間裏缺了mysql.host表,從而出現了啟動失敗的錯誤。
而錯誤二則是個伴生錯誤,data文件下的ib_logfile未被刪除,導致二次安裝想生成logfile時發現總容量超過了4GB(此限制在5.6.2之後被修改為512GB)。
最後完善了下安裝腳本,加入刪除data文件的命令。
Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist