运行go run main.go时遇MySQL 'root'@'localhost'访问拒绝错误求助
解决方案
1. 修复Go程序MySQL无密码连接问题
错误Error 1045: Access denied for user 'root'@'localhost' (using password: NO)明确说明Go代码未携带密码访问MySQL:
- 定位
main.go第46行附近的MySQL连接代码,通常为sql.Open("mysql", "root@tcp(localhost:3306)/[数据库名]")格式,修改为带密码的连接字符串:
替换sql.Open("mysql", "root:[你的MySQL密码]@tcp(localhost:3306)/[你的数据库名]")[你的MySQL密码]和[你的数据库名]为实际值。 - 若程序使用配置文件(如
config.json、.env)存储连接信息,找到配置文件中数据库相关项,添加db_password字段并填入密码,确保代码读取该字段并拼接到连接字符串中。
2. 修复CMD无法执行MySQL命令问题
已添加环境变量仍报错,按以下步骤排查:
- 确认MySQL安装目录下的
bin路径(例如C:\Program Files\MySQL\MySQL Server 8.0\bin)是否正确添加到系统环境变量Path中,检查是否存在拼写错误或多余空格。 - 关闭所有已打开的CMD窗口,重新打开后执行
mysql -u root -p,输入密码测试连接。 - 若仍失败,直接在CMD中切换到MySQL的
bin目录再执行命令:cd C:\Program Files\MySQL\MySQL Server 8.0\bin mysql -u root -p
额外兼容性处理
若root用户仅能通过Workbench连接,可能是MySQL 8.0的认证方式导致Go驱动不兼容,在Workbench中执行以下SQL修改认证方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[你的MySQL密码]'; FLUSH PRIVILEGES;
内容的提问来源于stack exchange,提问作者Mashimaro7
相关产品推荐
相关产品推荐

