mysql upgrade 密码_mysql忘记密码如何重置密码,以及修改root密码的三种方法

本文详细介绍了在MySQL中如何在忘记密码的情况下,通过停止服务、修改配置文件、跳过授权表启动MySQL,然后重置root密码的步骤。此外,还列举了三种在正常情况下修改root密码的方法,包括使用mysqladmin、set password和GRANT授权工具,并强调了在skip-grant-tables模式下修改密码的注意事项。
摘要由CSDN通过智能技术生成

1.先将MySQL停止、

命令:systemctl  stop mysqld       #停掉MySQL

命令:systemctl status mysqld         #查看状态

6c4eb36cd1a6b05eb8a414d3df0c6bd1.png

2.然后跳过授权表启动MySQL服务程序

这一步主要利用mysqld的 --skip-grant-tables选项

修改my.cnf配置,添加 skip_grant_tables=1启动设置:

打开/etc/my.cnf配置文件

添加skip_grant_tables 一行,然后保存退出

a39d81f76ee50deddfe8859d1ff91aee.png

3.然后启动MySQL并查看状态

命令:systemctl  start    mysqld

d7ccc4eacc1688909d321fc25afcb34a.png

4.使用mysql命令连接到MySQL服务,重设root的密码

由于前一步启动的MySQL服务跳过了授权表,所以可以root从本机直接登录

在命令行内直接输入mysql即可

2cae450bfe2601d4097ea0ad2fff7aa0.png

540e98050bed2a292a4a0549afc1e069.png

5.进入 mysql> 环境后,通过修改mysql库中user表的相关记录,重设root用户从本机登录的密码:

命令:update mysql.user set authentication_string=password('123qqq...A')   where user='root' and host='localhost';

#重新设置密码

命令:FLUSH PRIVILEGES;          #刷新授权列表

然后输入  exit  退出mysql

注意:通过执行“FLUSH PRIVILEGES;”可使授权表立即生效,对于正常运行的MySQL服务,也可以用上述方法来修改密码,不用重启服务。本例中因为是恢复密码,最好重启MySQL服务程序,所以上述“FLUSH PRIVILEGES;”操作可跳过。

1ea107cac689534fdeaed47d45d3618f.png

6.重新以正常方式启动MySQL服务程序,验证新密码

如果前面是修改/etc/my.cnf配置的方法来跳过授权表,则重置root密码后,应去除相应的设置以恢复正常:

4536c59025ab8160a71547bb4b6ef30e.png

f892d83cba274bc8a2e58cc9e402bc1a.png

7.重置后的新密码,才能成功登入(试试新鲜出炉的密码吧):

60e5945fcf2309d985ba85be9ca4acf7.png

OK!现在忘记密码如何重新设置已经完了,接下来就是root修改密码的三种方式:

1.重置管理员root密码

正常的前提是:已知当前MySQL管理用户(root)的密码。

方法:在Shell命令行下设置

使用mysqladmin管理工具,需要验证旧的密码。比如,以下操作将会把root的密码设置为A...qqq321 :

命令:mysqladmin -uroot -p password 'A...qqq321'

7ac5b8bf2faf7190d779e3742f01f07a.png

21e7e65f3456b31a8a22bec7a62bcf63.png

2.修改管理员root密码的其他方法(三种)

1)方法1,以root登入mysql> 后,使用set  password指令设置

这个与新安装MySQL-server后首次修改密码时要求的方式相同,平时也可以用

扩展一下(如果出现

ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50564, now running 50726. Please use mysql_upgrade to fix this error.        这种报错,是因为没更新数据库里的结构信息导致的,输入一行命令即可解决:mysql_upgrade    -uroot     -p'123qqq...A')

我是因为修改密码太多了,可能导致的报错,use用户表没更新又重新设置密码才会这样的

cfa8a7f101994a015a6fee5b7b175637.png

好了,刚才那种情况可能会出现,继续刚才的修改密码

命令:set password for root@localhost=password('1234567');

ef1e64e7ec4a28efe7b442b4f20b2cb1.png

试验一下

70742ce7c64266517fc2c7e55943b540.png

2)方法2,以root登入mysql> 后,使用GRANT授权工具设置

这个是最常见的用户授权方式:

命令: grant all ON *.* TO root@localhost identified by '123qqq...A';

b01266a325ad3d064f9d4d1582745901.png

3)方法3,以root登入mysql> 后,使用UPDATE更新相应的表记录

这种方法与恢复密码时的操作相同:

e23d9fe1e8e729098e214c394bb559f8.png

57bc0be1123d30f31a04e41436b523f4.png

在上述方法中,需要特别注意:当MySQL服务程序以 skip-grant-tables 选项启动时,如果未执行“FLUSH PRIVILEGES;”操作,是无法通过set  password或者grant方式来设置密码的。登录MySQL或者验证这两种方式时,都会看到ERROR 1045的报错:

f78b8be849b876c373eb30739ef6282d.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值