【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案

14 篇文章 0 订阅
文章讲述了在使用Go-Zero操作MySQL时遇到的Error1045报错,主要原因是登录密码配置错误。作者提供了两种解决方法:一是修改yaml文件中的MySQL配置,使用正确的密码;二是临时禁用grant-tables以实现无密码登录。
摘要由CSDN通过智能技术生成

【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 设置是否输入密码
这时需要我们手动修改Mysqlini配置文件,没有文件管理员权限可以看这篇文章

修改ini配置文件

Step1
  • 首先,找到MySQLmy.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安装与初步使用

【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero

【Go面试向】defer与time.sleep初探

【Go面试向】defer与return的执行顺序初探

【Go面试向】Go程序的执行顺序

【Go面试向】rune和byte类型的认识与使用

【Go面试向】实现map稳定的有序遍历的方式

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寸 铁

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值