保留数据,解决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.ini
的datadir=
参数中)
cd /data/mysql/
cd mysql/
发现真的没有user表
解决方案:
去找一个好的msyql的user表复制到用问题的MySQL数据库中
用好的mysql用户表的账号密码登录,此时数据都正常了,该方法我只在MySQL5.7版本使用过。拷贝的大版本肯定是要相同的。
https://gitee.com/linfgi/app/tree/master/mysql/mysql.user
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话