MySQL数据库忘记密码怎么办,详细教程

文章目录

1.客户允许重启数据库服务

2.客户不允许重启数据库服务

1。当客户允许重启mysql服务  

原理(用户密码存在某一张表中,只要修改某张表中的密码即可)(8.0以上不适用用第二个方法)
方法一:my.cnf中 【mysqld】配置行下skip_grant_tables   #跳过授权的表,修改配置文件需要重启服务生效。


原理:进入数据库后查看表结构   desc mysql.user;   找到字段authentication_string 密码存在此字段中 故可以查询此表中需要的字段 select name,host,authentication_string from mysql.user; 查到加密后的字符串
得知mysql使用password('') 函数加密密码   思路是制作一个新的加密串替换旧的字段下的字符串,即可完成修改密码操作。(注意user表中有多个用户,需要指定需要修改用户),改后要flush privileges;
例 update mysql.user set authentication_string=password('xxxxxx') where user='root' and host='localhost';  

flush privileges;  

#注:低版本使用 8.0以上不适用
方法二:8.0版本以上操作方法  my.cnf中 【mysqld】配置行下skip_grant_tables   #跳过授权的表   修改配置文件需要重启服务生效

 ./mysql进库   
执行update mysql.user set authentication_string='' WHERE user='root' and host='localhost';   #将root密码设置为空  

exit 后注释my.cnf中 【mysqld】配置行下skip_grant_tables   重启数据库
重启后./mysql 进入库

 use mysql  

alter user root@'localhost' identified by '123456';    #即可更改密码 退出新密码重进即可。

2.客户不允许重启数据库服务

客户不允许重启mysql服务 原理(知道另一台oadb库的root密码,物理文件覆盖,加载新文件拷整个data下oadb库文件,不推荐只拷user的文件,可能和其他表有关联)

!!!有风险,实在没有办法可用,后果是恢复后只有root用户,其他用户会消失,根据业务重新创建对应用户
例:

一覆盖     scp -r ip:/mysql/data/oadb  /mysql/data/    
二加载数据 ps aux |grep mysqld   查看到主进程号(一定是主进程)

 kill -SIGHUP 进程号      #SIGHUP作用为服务对应磁盘文件的热加载(不用重启加载,类似nginx reload)  即可使用已知的数据库的root密码登录还原后数据库。

  • 37
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值