MySQL故障 Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

水深无声 2022-08-06 01:26 117阅读 0赞
  1. MySQL数据库不同版本之间的一些实现机制和系统表的数量是不同的,所以使用innobackupex进行物理备份和恢复的时候,会出现问题。
  2. 今天在一台安装 MySQL 5.615 高版本MySQL数据库上进行了备份,然后将备份拷贝到 一台安装 MySQL 5.5.35 上进行恢复,执行了apply-log copy-back之后,使用mysql 5.5启动恢复后的数据库时,提示错误:

Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

  1. 一开始认为是 mysql.host表丢失了,但后来确认原来的 MySQL 5.6.15 上的数据库,也没有mysql.host 表,说明从原库拷贝和恢复的过程是没有问题的;
  2. 那么问题就应该是两个服务器上的 mysql 5.5 mysql 5.6数据库版本不同导致的问题。
  3. 通过查询网络,发现之前有类似错误的处理方法:
  4. <span style="font-size:18px;">今天在安装mysql后,启动时候没有启动成功,查看了下日志报错如下:
  5. ---------------------------------------------
  6. [root@localhost local]# less /var/log/mysqld.log
  7. 1、查看报错信息如下:
  8. [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
  9. 2、经过查阅资料得知。要敲如下命令解决:
  10. mysql_install_db usrer=mysql datadir=/var/lib/mysql
  11. datadir是我的mysql存放文件目录
  12. 3、然后重启mysql还是不行:
  13. MySQL Daemon failed to start.
  14. 正在启动 mysqld [失败]
  15. 4、然后试了下单独的命令,启动完成
  16. mysql_install_db
  17. 5、启动mysql服务
  18. [root@mysql mysqld]# /etc/init.d/mysqld restart
  19. 停止 mysqld [确定]
  20. 正在启动 mysqld [确定]
  21. </span>
  22. 但是实际上采用如下方法,还是不能正常启动;
  23. 于是我在 mysql 5.5.35 上删除了 /usr/local/mysql/ 程序,然后将 mysql 5.6.15 所在的目录打包,传输到这台服务器上加压缩,并重命名成 /usr/local/mysql/ 目录,确认mysql命令可以正常执行后,使用 mysqld\_safe 可以正常启动恢复的数据库,并顺利搭建主从结构。

发表评论

表情:
评论列表 (有 0 条评论,117人围观)

还没有评论,来说两句吧...

相关阅读