【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案
大家好 我是寸铁👊
总结了一篇Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案的文章✨
喜欢的小伙伴可以点点关注 💝
问题背景
今天在使用go-Zero
框架操作MySQL
实现增删改查时,进行API
测试的时候报错如下:
具体如下:
Error 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
2024/2/4更新
寸铁的博客是结合问题实时更新的,便于大家可以及时吸取经验,提高开发效率!
解决方法
出现这个问题有两种解决方法:
- 一种是如下教程进行无密码登录配置
- 一种是再检查一遍配置文件
yaml
经过今天的测试,发现确实是我的yaml
文件的MySQL
登录密码配置不对。
这里的密码是root 我设置的密码是123456
这就是Error 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)的一个原因
此外,在涉及外部工具测试API接口时,loc
的值要设置为Local
。
详见这篇笔者的这篇文章,对yaml
文件的配置介绍得比较详细。
正确格式如下:
Mysql:
DataSource: root:123456@tcp(127.0.0.1:3306)/zero_db?charset=utf8mb4&parseTime=True&loc=Local
小结
这是因为我本地登录数据库失败,密码不正确,没有设置
loc
的值为Local
,而不是从外部进行测试时候,没有密码登录的权限造成!大家在配置时,一定要留意细节,如密码等等。当然,这是一次非常宝贵的经验!
测试API
再进行API
的测试后,可以实现对MySQL
的增删改查
- 先插入一条数据
- 在后台查看是否执行插入的sql语句,确实是执行了!
- 查询一下是否插入成功,插入数据库成功!
- 再进行查询操作,查询成功!
测试工具为API-fox
排查
其实就是MySQL
设置是否输入密码
这时需要我们手动修改Mysql
的ini
配置文件,没有文件管理员权限可以看这篇文章
修改ini配置文件
Step1
- 首先,找到
MySQL
的my.ini
配置文件,如果实在不知道放在哪里,建议使用Everything
全局搜索,一般是放在如下路径:
C:\ProgramData\MySQL\MySQL Server 8.0
- 接着,右击文件,点击打开路径
Step2
进入指定路径的文件夹后,注意要打开隐藏的项目文件,具体如下:
Step3
双击打开my.ini
文件,具体操作如下图:
- 先ctrl + A全局搜索mysqlId
- 找到[mysqlId]的位置
- 在该位置后方添加如下语句
skip-grant-tables
作用:跳过当前所有的表格,不用密码登录。
最后,记得ctrl+s
保存再关闭
重新启动MySQL
出现如下提示:
这里首先需要配置一下环境变量 , 默认大家已经配置完毕。
接下来就是使用管理员身份启动命令行窗口
并输入如下代码:
mysqld -- install
显示成功安装!
注意:要重新启动mysql
,在mysql中使用的是先关闭再开启的操作。
- 先关闭
net stop mysql
出现这个说明没有启动任何MySQL服务
- 再启动
net start mysql
出现这种情况,需要去服务中进行MySQL
的手动停止和暂停!
- 首先,按住
win
+R
键
- 接着,输入如下指令回车,打开计算机的服务窗口
services.msc
- 找到
MySQL80
(这里的数字是版本号无太大关系)
先点击停止
再点击启动
之后再重新打开一个cmd
窗口
输入如下命令:
mysql -u root -p
一般的机器走到这里应该是可以无密码登录
个别情况
由于不同的机器,存在的情况可能不同。
笔者这里尝试了很多次,最后还是无法完全实现无密码登录。
按照上面的流程走后,回车,无输入密码登录,但是会报如下错误:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)
把配置文件改回原来的样子,输入原来设置的密码,又可以登录
试过多篇博客去操作该问题,如果你和寸铁一样!
最省时的办法是重装,暂时没有比重装更好的办法!
结语
建议大家装MySQL时不要设置密码!
除非是真的出于安全性考虑,一般来说,学习用的不用设置密码。
看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕
往期好文💕
【保姆级教程】Windows11下go-zero的etcd安装与初步使用