【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" />=utf8mb4&parseTime=True&loc=Local
修改后,再次运行入口文件,如下:
连接成功!
结构分析
针对上面的DataSource
进行结构分析!
字段 | 含义 |
---|---|
DataSource | 数据源,用于后续函数的导入数据源操作 |
root | 数据库的用户,可以是其他名字 |
: | : 后的内容是该用户登录对应的密码 |
@tcp | tcp 网络协议 |
() | 括号中的内容为MySQL 的地址和端口号 |
/ | / 后的内容为数据库的名字 |
charset | 数据库的字符集,常用utf8mb4 |
parseTime | 设置过期时间 |
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面试向
【Go面试向】defer与time.sleep初探
【Go面试向】defer与return的执行顺序初探
【Go面试向】Go程序的执行顺序
【Go面试向】rune和byte类型的认识与使用
【Go面试向】实现map稳定的有序遍历的方式