保留数据,解决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 @   雪花凌落的盛夏  阅读(101)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示