请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于mysql8.0忘记root密码,重新设置密码报错解决及重新设置新密码的过程?

已经按照老师的以下步骤修改完密码后无法登陆报错

# 修改mysql配置文件
[xiaokang@localhost ~]$ sudo vim /etc/my.cnf
[sudo] password for xiaokang: 
(进入到里面在末尾添加一行 skip-grant-tables
 意思是跳过授权表,这样就可以无密码登陆)
# 重启mysql服务器
[xiaokang@localhost ~]$ sudo service mysqld restart
Redirecting to /bin/systemctl restart  mysqld.service
# 直接在输入密码行,回车可以无密码登陆
[xiaokang@localhost ~]$ mysql -uroot -p
Enter password:       
# 进入mysql数据库,设置了root的账户新密码为456789
mysql> update user set authentication_string='456789' where user='root';
Query OK, 1 row affected (0.11 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges;   # 刷新权限
Query OK, 0 rows affected (0.02 sec)

注释掉mysql设置文件中的skip-grant-tables,然后再重新启动服务器,再用新密码登陆报错

[xiaokang@localhost ~]$ mysql -uroot -p
Enter password:   

MySQL8.0ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
报错的原因是:MySQL8.0之前的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。所以不能再修改authentication_string的值重新设置密码了。

解决办法:
和之前的一样现在mysql设置文件添加一行skip-grant-tables,然后可以无密码登陆

# 进入mysql数据库,先将authentication_string的值置空。
mysql> UPDATE mysql.user SET authentication_string="" WHERE user='root' and host='%';
Query OK, 1 row affected (0.32 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges;  # 刷新权限
Query OK, 0 rows affected (0.11 sec)

可能会碰到以下报错ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement,直接刷新权限就行

mysql>  ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '456789'; 
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 先设置策略和密码长度
mysql>  set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password.length=1;
Query OK, 0 rows affected (0.00 sec)
# mysql8.0 重新设置密码
mysql>  ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '456789'; 
Query OK, 0 rows affected (0.33 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.33 sec)

然后注释掉mysql设置文件中的skip-grant-tables,重新启动服务器,这样在使用新密码登录就可以了

查了好多资料终于给解决了 哎哎!!!

正在回答 回答被采纳积分+3

2回答

提问者 赵佳子彧 2019-06-19 18:12:24

mysql8.0重新设置新密码  https://mp.csdn.net/postedit/92839888


1 回复 有任何疑惑可以回复我~
编程浪子 2019-06-19 18:38:37

你好
你说为什么你这么优秀。哈哈。目前下来你是学习最认真的之一

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
快速上手Linux 玩转典型应用
  • 参与学习       1663    人
  • 解答问题       572    个

以主流CentOS 7 操作系统为例,系统讲解Linux,真实线上环境助你快速上手,独立配置运维服务器

了解课程
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号