初次学习使用mysql,今天忘记之前的密码,出现了Access denied for user ''@'localhost' (using password: YES)以及1045 - Access denied for user ‘root‘@‘localhost‘ (using password:YES)的报错,最后如愿解决,将过程经历记录下来,其实网上有很多文章,但是不一定每篇解决方案都适用自己的软件或者库的版本,所以走了一些弯路;
1、现象以及原因
数据库版本:8.0.28
Navicat连接mysql数据库报错:1045 - Access denied for user ‘root‘@‘localhost‘ (using password:YES/NO)yes或no表示是否有无连接数据库的密码,原因大概率是忘了密码,对我来说是随意修改了密码(Navicat密码栏是虚位显示,忘记密码的话,不要看到几位就输几位)
而Access denied for user ''@'localhost' (using password: YES)是mysql默认不支持远程连接,需要修改用户表中的权限;两个问题的解决方法都记录以下;
2、1045 - Access denied for user ‘root‘@‘localhost‘ (using password:YES/NO)【解决方法】
1.打开cmd,点击“开始”->“运行”(快捷键Win+R),输入cmd
2.停止:输入 net stop mysql(mysql是数据库服务名称,如果你的不是就改成对应的名称,比如我是mysql8,start也是同理)
3.跳过权限:输入mysqld --console --skip-grant-tables --shared-memory
跳过权限这一步有一个小问题,很多文章会介绍在my.ini中加入[mysqld]这个条目下加入 skip-grant-tables
这一句可能会导致后面我们重启数据库服务无法启动,然后出现报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES),因此建议还是直接用命令
4、新建一个cmd窗口(用管理员权限)
5、cd进入mysql安装包的bin目录,这里也可以在在bin目录中的文件路径处输入cmd进入
6、无密码连接mysql
7、重置数据库的密码
use mysql
update user set authentication_string='' where user='root';(这里也有点小问题,我用这个命令无法重置,而使用
set password for root@localhost='新密码';
就成功了,前一个命令的错误提示如下,如果有相同情况,可以尝试这个方法
8、启动mysql服务
9、关闭前面的cmd窗口,无密码进入mysql
至此,第一个问题已经解决了;
3、Access denied for user ''@'localhost' (using password: YES) 【解决方法】
这个原因是由于mysql中默认支持本地连接,不支持远程连接,因此如果要在代码中远程连接,需要改一点表中的属性
1、查看root用户是否仅允许本地localhost登录,
如果是,就改成%, update user set host ="%" where user="root";表示任意IP都可登录,注意这一步中是双引号
2、修改后查看是否host是否已经修改完成
3、最后 flush privileges;清掉缓存
至此都是其他博主已经总结的方法,我只不过借鉴了,当然我又遇到什么问题呢?
我已经更改了root用户的host,但是我想修改密码(前面是空密码),出现如下提示
发现我不能使用localhost,而应该使用%;
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
这只是一个很傻的错误,但是如果有朋友和我一样前面顺序反了,要注意这个问题。
flush privileges; --- 最后再清一下缓存;
exit --退出
至此已经圆满解决,我会将参考文章放在最后,感谢提供帮助的各位博主!
如有异议,请联系作者删除。
MySQL8.0修改Root密码的方法步骤_Mysql_脚本之家
Access denied for user ‘‘@‘localhost‘ (using password: YES)错误解决方法_access denied for user ''@'localhost' (using passw-CSDN博客数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式_1045 access denied for user root-CSDN博客Access denied for user ''@'localhost' (using password: YES)错误解决方法_access denied for user'binbin'@'localhost'(using p-CSDN博客