(该问题基于windows系统,当然,解决过程通用)

	//mysql连接数据库时报错:
	ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES);

第一步:
跳过权限验证;找到mysql目录下的my.ini文件,在[mysqld]下添加skip-grant-tables ,保存并重启服务
在这里插入图片描述
(shared-memory,博主在加入skip-grant-tables命令后,重启服务失败,因此加入该语句,当重启服务出现问题的小伙伴,可查看错误日志)

第二步:
修改密码:
1.cmd界面键入mysql -u root -p 或者 mysql 直接进入数据库,遇到密码验证可直接回车跳过。
2.键入use mysql;
3.先将密码置为空:
update mysql.user set authentication_string='' where user='root';
4.刷新权限:FLUSH PRIVILEGES;
5.修改root密码:
alter user 'root'@'localhost' identified by 'root';
注:在修改密码时注意root的权限:select user,host from user;
此时为
alter user 'root'@'%' identified by 'root';

在这里插入图片描述

第三步: 退出,修改my.ini文件(跳过权限验证只是为了解决问题啦),删除之前添加的命令,重启服务,大功告成!!!

因为博主使用的mysql客户端是navicat,在执行完上述操作后,客户端依旧无法连接,具体错误博主就不展示啦。
此时我们需要进入cmd命令界面操作数据库,执行命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
这是navicat修改密码的命令,同样注意权限。

同时附上可能用上的命令:
//给用户root所有权限
update user set host='%' where user='root';
Grant all privileges on test.* to 'root'@'%';

//永久修改密码,注意权限
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐