【Go-Zero】[error] failed to initialize database, got error Error 1045 (28000):报错解决方案
【Go-Zero】[error] failed to initialize database, got error Error 1045 (28000):报错解决方案
大家好 我是寸铁👊
总结了一篇[error] failed to initialize database, got error Error 1045 (28000):解决方案的文章✨
还包含配置jwt密钥的各种注意事项✨
喜欢的小伙伴可以点点关注 💝
问题背景
大家好,我是寸铁,今天在使用Go-Zero 结合gorm 进行MySQL 数据库操作的时候,配置完对应的文件后,报错了,下面来看看是什么bug?
报错如下:

具体如下:
[error] failed to initialize database, got error Error 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
panic: 连接mysql数据库失败, error=Error 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
排查
启动MySQL服务
- 首先,先看一下能不能通过命令行登录
MySQL

发现无法通过命令行连接MySQL
我使用的是MySQL的默认端口3306 端口,所以不存在命令行连接端口的问题,那就是说明MySQL 的服务没有开启。
可以选择命令方式开启,如下:
net start mysql
也可以选择使用计算机服务的方式开启,如下:
- 按住
win+R - 接着输入
services.msc

- 接着,右键点击启动即可

好的,在MySQL 服务开启后,我们再来试一下能否连接MySQL
连接成功!

修改yaml文件
按道理说,应该启动完MySQL 服务后,是可以成功连接的。毕竟一开始也在cmd 中连接测试成功了。
但是为什么还是报错了呢?

分析如下:
- 首先,这里提示需要密码验证登录,考虑到我的
MySQL是通过密码进行登录的,所以应该把正确的密码输入配置文件 - 接着,在哪里输入密码呢?这里就涉及到
yaml文件了
在Go-Zero中,使用goctl 一键转换后,生成的文件夹中有etc 这一层。

在etc这一层中,存在yaml 文件,通常对环境的配置都放在yaml 文件中。所以这里,需要对该文件进行配置。
找到问题所在!

这里的密码是
root我设置的密码是123456
这就是连接不上的原因!
修改如下:
Mysql:
DataSource: root:123456@tcp(127.0.0.1:3306)/zero_db?charset=utf8mb4&parseTime=True&loc=Local
修改后,再次运行入口文件,如下:

连接成功!
结构分析
针对上面的DataSource 进行结构分析!
| 字段 | 含义 |
|---|---|
| DataSource | 数据源,用于后续函数的导入数据源操作 |
| root | 数据库的用户,可以是其他名字 |
| : | :后的内容是该用户登录对应的密码 |
| @tcp | tcp网络协议 |
| () | 括号中的内容为MySQL的地址和端口号 |
| / | / 后的内容为数据库的名字 |
| charset | 数据库的字符集,常用utf8mb4 |
| parseTime | 设置过期时间 |
| loc | 值为Local 表示本地运行 |
注意
?后的内容根据需要进行配置,比如字符集、时间、本地验证等等- 如果要在API-fox/Postman进行测试接口,这里的MySQL的
loc值一定要记得设置为Local
否则会出现如下结果

这就是没有设置loc 为local的问题,即没有选择本地验证的方式!
其实,想一下确实如此,在有密码验证的方式下,怎么可能在外部可以进行测试!
结语
本次的错误排查主要是3个点
- 一个是启动
MySQL服务,启动一次即可 - 一个是
yaml文件配置MySQL登录密码或其他信息的正确 - 涉及外部接口测试问题,
MySQL选择本地验证方式,即loc的值为Local
看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕
往期好文💕
保姆级教程
【保姆级教程】Windows11下go-zero的etcd安装与初步使用
【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero
【Go-Zero】手把手带你在goland中创建api文件并设置高亮
报错解决
【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项
【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案
【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案
【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案
【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案
【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案
【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案
Go面试向
更多推荐
所有评论(0)