mysql删掉user数据库怎么办_MySQL的user表被删除了怎么办 user表被清空解决办法

近期就有人遇到user表内容被清空的情况。如果发生了此情况,千万不要慌,更不能隐瞒问题(今天这位朋友就比较惨,别人删了也没敢告知,结果binlog已经清理了),这样有利于恢复。现在针对几种情况,进行恢复操作的演示。

1.  user表内容被清空

如果有权限的同学误执行了情况mysql.user表内容的情况,如果是delete的方式还是相对容易恢复的(binlog存在的情况)

1.1  模拟误删除/* 当前user表的内容 */mysql> select user,host from mysql.user;+---------------+--------------+| user          | host         |+---------------+--------------+| repl          | 192.168.28.% || mysql.session | localhost    || mysql.sys     | localhost    || root          | localhost    |+---------------+--------------+4 rows in set (0.00 sec)

mysql> select now();+---------------------+| now()               |+---------------------+| 2020-04-16 06:37:07 |+---------------------+1 row in set (0.00 sec)

现在执行误删除mysql> delete from  mysql.user;

Query OK, 4 rows affected (0.01 sec)

mysql>

1.2   恢复

当前情况下,如开启了binlog(生产环境一般都是开启了的),则可以从binlog恢复

注意如果有全部及其之后的binlog 则可以通过恢复备份并追加binlog的方式恢复数据(后续其他文章再专题介绍),本文基于无全备,仅有最近的日志情况下恢复(主要是为了使用binlog2sql工具)

1.2.1 先恢复root账号

因为删除后,其他用户无法重新连接数据库了,需要紧急恢复root账号,再做后续其他账号的恢复,恢复步骤为:

修改为跳过授权的模式,即在配置文件my.cnf文件中添加 skip-grant-tables

重启数据库

登录数据库,添加root@'localhost'账号(可以从相同版本数据库中导出一个root账号的sql语句恢复/usr/local/mysql5.7/bin/mysqldump -uroot -p'123456'  -t --socket=/data/mysql3307/tmp/mysql.sock mysql user --where " 1=1 anduser='root' and host='localhost'" >1.sql

恢复数据mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -ADatabase changed

mysql> INSERT INTO `user` VALUES (&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值