近日,因为服务器硬盘出现坏道,致使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)