• 运维特工,战胜心魔!!
  • 有些事情其实没有那么难,只是我们感觉难,走出第一步!
  • 你所浪费的今天,是昨天死去的人奢望的明天!!!
  • 欢迎访问 unixfbi.com 运维特工社区http://unixfbi.com/
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 运维特工:http://www.unixfbi.com
  • 人生没有白走的路,每一步都算数!!
  • 空杯心态,沉淀自己!

不重启MySQL恢复账号密码

MySQL unixfbi 8个月前 (10-23) 1478次浏览 已收录 0个评论 扫描二维码

不重启 MySQL 恢复账号密码

背景:

操作数据库失误,修改数据库密码的时候,使用了如下命令:

update mysql.user set authentication_string='unixfbi.com' where user='fbi_admin' and host='localhost';     

应该把authentication_string='unixfbi.com'写成authentication_string=password('unixfbi.com')

最后导致无法使用fbi_admin用户登录了。

解决方法:

方法一:
按照 MySQL 忘记密码的流程进行处理。
在 my.cnf 文件中[mysqld]块中添加skip-grant-tables,然后重启 MySQL,不需要输入密码,直接登录即可。
然后修改密码

mysql> update mysql.user set authentication_string=password('unixfbi.com') where user='fbi_admin' and host='localhost';
mysql> flush privileges;

然后把 my.cnf 配置文件进行还原,重启 MySQL 即可。

方法二:
由于方法一需要重启 MySQL 实例,但是生产环境肯定是不能重启的。
那该怎么办呢?
我们可以使用user.MYD文件恢复之前的账号密码。因为我这里每天都会使用xtrabackup定时备份 MySQL,所以可以很容易拿到这个user.MYD文件。

# tar zxvf  xtra_fullbak_2018-10-23.tar.gz mysql/user.MYD
# cp mysql/user.MYD  /data/mysql/mysql3306/data/mysql/

操作前,记得先备份 MySQL 实例的这个user.MYD文件。

然后使用其他用户登录 MySQL,执行下面的操作;

mysql> flush tables;
mysql> flush privileges;

然后就可以使用修改前的用户名密码登录 MySQL 了。

user.MYD 是什么文件?
user.MYD文件是 MyISAM 存储引擎专用,存放 MyISAM 表的数据。每一个 MyISAM 表都会
有一个“.MYD”文件与之对应,存放在所属数据库的目录下。


UnixFBI 运维特工 , 版权所有丨如未注明 , 均为原创丨 转载请务必注明原文链接http://www.unixfbi.com/585.html
喜欢 (0)
[支付宝]
分享 (0)
unixfbi
关于作者:
运维工程师一枚,做有价值的事情!
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址