mysql 8.0以上重置密码

命令行都要以管理员运行 

1:net stop mysql            停止mysql服务

2:mysqld --console --skip-grant-tables --shared-memory        启动MySQL服务的时候跳过权限表认证

3:由于上面的命令行被mysql的服务给占用,我们得重新开启一个新的命令行

4:在新开的命令行中执行mysql

mysql 8.0以上重置密码_第1张图片

5:update user set authentication_string = ''  where user='root' ;                将root用户的密码清空

6:quit 退出,然后在之前的命令行将我们开启的mysql服务停止掉(Ctrl+C或者关闭命令行),然后执行net  start mysql 重新启动mysql服务

mysql 8.0以上重置密码_第2张图片

7:在我们之后开启的命令行中输入mysql -uroot -p 然后按enter键,输入密码继续按enter键(这里密码已经被清空),

mysql 8.0以上重置密码_第3张图片

 

 8:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';           修改密码

mysql 8.0以上重置密码_第4张图片

9:退出后,使用新密码登录

mysql 8.0以上重置密码_第5张图片

 

注意的地方,网上有些给的是使用update命令在第五步直接修改密码为我们重置的密码,然后使用flush privileges;命令刷新权限再退出,重启mysql服务,然后使用我们重置的密码重新登陆。然而你会发现登录会提示密码不正确,

下面是使用update命令将密码修改为root

mysql 8.0以上重置密码_第6张图片

登录报错,说明使用update直接修改密码是不可以的。我们也可以从上面看到update保存的密码是明文 

 使用alter命令修改后的密码是加密的

mysql 8.0以上重置密码_第7张图片

 

update 方法保存的为明文是由于没有使用password()方法,而password()方法在mysql5.7.6版本后已经废弃了,所以必须alter命令去修改密码了。

如果在第5步直接使用alter命令去修改密码也是不可以的,会报错

说是在免鉴权的情况下不支持这个操作

所以我们必须先清空密码,然后再使用alter命令修改密码

ps:mysql5.7.6版本后 废弃user表中 password字段 和 password()方法,所以旧方法重置密码对mysql8.0版本是行不通的,共勉

 

参考:

https://www.cnblogs.com/PollyLuo/p/9682299.html

https://www.cnblogs.com/feiyangbaqingchun/p/9751184.html

你可能感兴趣的:(问题记录)