近日,因爲服務器硬盤出現壞道,致使mysql啓動不了,錯誤日誌中顯示「CAN’T OPEN AND LOCK PRIVILEGE TABLES: INCORRECT FILE FORMAT ‘db’」。mysql
通過百度google,經過以下方法解決,轉到mysql數據庫數據目錄下,找到db這個表的位置,刪除db.frm文件,而後運行mysql_install_db腳本(這個腳本在源碼安裝的目錄下,根據本身的狀況了)進行修復,若是沒有其餘問題的話,就能夠啓動mysql了。sql
--------------------------------------------------------------shell
能夠參考下面的資料,我是參考了一個英文的帖子,可是如今找不到地址了。數據庫
一個安裝lenny-debian系統的小設備,手快升級mysql後再啓動mysql出現服務器
120101 15:14:21 InnoDB: Started; log sequence number 0 73553 120101 15:14:21 [Note] Recovering after a crash using /var/log/mysql/mysql-bin 120101 15:14:21 [Note] Starting crash recovery... 120101 15:14:21 [Note] Crash recovery finished. 120101 15:14:21 [ERROR] Fatal error: Can't open and lock privilege tables: Incorrect file format 'host' 老是啓動不了,google了一下,試驗後發現使用下方法能夠正常修復 step 1.使用 mysqld --skip-grant 命令啓動mysql step 2.使用 mysqldump 將庫數據導出 step 3.使用 mysqladmin shutdown 中止mysqld 服務 step 4.在shell 下進入mysql數據目錄,刪除下面的 mysql 庫 step 5.運行 mysql_install_db 從新建立默認的 mysql 庫 step 6.運行mysqld服務,檢查導入庫數據,從新建立庫用戶、密碼以及設置權限 step 7.執行cat /etc/mysql/debian.cnf 查看 debian-sys-maint賬號密碼,運行mysql執行以下命令添加賬號 mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '前面看到的密碼' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; 若是已有debian-sys-maint賬號,可使用以下命令修改密碼爲前面看到的 mysql>SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('前面看到的密碼'); mysql> FLUSH PRIVILEGES; (如沒有重要數據,能夠忽略步驟1,2,3)