为了账号安全,请及时绑定邮箱和手机立即绑定

当系统库删除,mysql无法启动怎么办

标签:
MySQL

系统环境:CentOS Linux release 7.6.1810
数据库:mysql 5.7.24

当你不小心把数据库里的系统库,或者某些重要的系统表给删了,重启时会无法启动,提示异常

提示错误

Can’t open and lock privilege tables: Table ‘mysql.user’ doesn’t exist

解决思路

备份现有数据库文件,重新初始化系统库,把之前的业务库文件拷贝到新的数据目录中

解决过程

1. 备份数据库数据

不清楚数据库文件目录:可以从 /etc/my.cnf 中找到

basedir : 可执行命令从这里找

datadir:数据库数据文件目录。系统库和个人创建库在这个目录中

安全起见,备份所有数据

cp -r -f /data/mysql /mysqltmp

2.重新初始化系统表

./mysqld --defaults-file=/etc/my.cnf --initialize  
--user=root --basedir=/usr/local/mysql --datadir=/data/mysql

在datadir目录中找到mysql.err 文件,里面有系统初始化mysql生成的密码

启动mysql:service mysql start

3.修改mysql密码和连接权限

#1.连接mysql,输入第2步生成的密码串
mysql -u root -p
#2.登录进去后,设置新的密码
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
#3.设置权限支持远程登录
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123';
mysql> flush privileges;

4.把步骤一拷贝得到业务库拷贝到新的数据库

1、从备份中(/mysqltmp )找到业务数据库对应的文件拷贝到 数据目录中 /data/mysql

2、从备份中(/mysqltmp ) 中把 ibdata1 复制到数据目录中 /data/mysql

3、删除 ib_logfile0,ib_logfile1 文件

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
33
获赞与收藏
0

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消