本文已参与 新人创作礼 活动,一起开启掘金创作之路
今天下午,接到‘老板’的任务,说是有台服务器的mysql中的root@localhost不小心被误删了,现在需要新增加一个库,root用户现在已经没法登录了,让我想办法恢复下。
从描述中看,因为已经退出mysql的终端了,所以没法再添加这个用户了。然后我就上了服务器,现状就是这样:
所以我的第一反应是先跳过密码验证,登录上去先看看是个什么情况。所以在my.cnf中添加skip-grant-tables参数后重启mysqld服务:
用空密码进入了mysql终端,上翻历史记录找到下面这条误删语句:
然后通过查阅各种资料并在自己虚拟上实验成功后,进入生产环境进行了恢复操作,下面是整个过程的步骤总结:
1、首先在/etc/my.cnf配置文件中的 [mysqld]下面添加skip-grant-tables用来跳过安全密码验证
2、重启mysql服务
# systemctl restart mysqld.service
3、使用mysql命令直接进入mysql终端,不需要密码
# mysql
4、使用mysql数据库
mysql> use mysql;
5、重新添加用户
mysql> insert into user set user='root',ssl_cipher='',x509_issuer='',x509_subject='';
mysql> flush privileges;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'MyPass@123' WITH GRANT OPTION;
mysql> flush privileges;
mysql> select * from mysql.user where user='root' \G;
mysql> exit
6、在/etc/my.cnf配置文件上删除掉或者注释掉skip-grant-tables配置项
7、重启mysql服务
# systemctl restart mysqld.service
8、使用root用户登录成功,完成恢复
所以大家在生产环境操作一定要谨慎。在这次恢复过程中,查阅的很多资料都是错的,很多人都是直接复制或者转载的,自己根本没实践过的东西放到网上,所以在进行一个没有把握的操作时最好在自己虚拟机上先验证下,千万别拿生产环境直接试!好了今天就分享到这里,如果觉得还不错的小伙伴记得点赞关注加收藏哦,哈哈~~
本人一直在从事devops运维相关工作,欢迎大家关注我的个人公众[运维小白成长之路],会不定期更新运维相关经验分享,希望能和大家一起成长~~