保留数据,解决Can‘t open and lock privilege tables: Table ‘mysql.user‘ doesn‘t exist

我的MySQL服务跑在虚拟机中,昨天因为宿主机磁盘出问题关闭了换了个磁盘,换了好后启动MySQL的虚拟机后就没管他,第二天使用MySQL的时候发现MySQL没有启动,就准备手动启动,结果报错

● mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2023-04-04 10:29:49 CST; 4s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2203 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)

Apr 04 10:29:46 mysql5-7 systemd[1]: Starting LSB: start and stop MySQL...
Apr 04 10:29:49 mysql5-7 mysqld[2203]: Starting MySQL... ERROR! The server quit without updating PID f...pid).
Apr 04 10:29:49 mysql5-7 systemd[1]: mysqld.service: control process exited, code=exited status=1
Apr 04 10:29:49 mysql5-7 systemd[1]: Failed to start LSB: start and stop MySQL.
Apr 04 10:29:49 mysql5-7 systemd[1]: Unit mysqld.service entered failed state.
Apr 04 10:29:49 mysql5-7 systemd[1]: mysqld.service failed.

去网上查询了半天,都不符合我的要求,我的数据是需要保留的。

去看看日志,报什么错误,查看my.cnf或者my.ini,看日志文件在哪里

在这里插入图片描述

tail -100 /var/log/mysqld.log 

在这里插入图片描述

发现报错,说是找不到msyql的user表,现在去MySQL的存储路径(这个路径在你的my.cnf或者my.inidatadir=参数中)

cd /data/mysql/

在这里插入图片描述

cd mysql/

在这里插入图片描述


发现真的没有user表

解决方案:

去找一个好的msyql的user表复制到用问题的MySQL数据库中

在这里插入图片描述

用好的mysql用户表的账号密码登录,此时数据都正常了,该方法我只在MySQL5.7版本使用过。拷贝的大版本肯定是要相同的。

https://gitee.com/linfgi/app/tree/master/mysql/mysql.user

 

posted @ 2023-04-04 14:05  雪花凌落的盛夏  阅读(82)  评论(0编辑  收藏  举报  来源