MYSQL没法启动,出现CAN’T OPEN AND LOCK PRIVILEGE TABLES: INCORRECT FILE FORMAT ‘db’

    近日,因为服务器硬盘出现坏道,致使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)
相关文章
相关标签/搜索