MySQL无法连接Docker Compose,提示Access denied for user (using password: YES)
问题求助:VS Code代码连接Docker部署的MySQL时出现权限错误
我正在做一个学校项目,需要把VS Code里的代码连接到Docker部署的MySQL,但连接数据库时一直弹出「Access denied for user (using password: YES)」错误。我试过重建数据库、重新创建MySQL配置文件、修改代码、调整MySQL设置,还反复检查了Docker相关文件,但都没解决问题。附上相关配置截图,麻烦帮忙看看怎么解决。
相关配置截图
- MySQL设置:

- 错误提示:

- Docker数据库构建代码:

- docker-compose配置文件:

- MySQL schema代码:

- MySQL其余配置:

排查方向和解决建议
- 检查用户权限范围
- 确认MySQL用户是否允许从
%(任意IP)连接,默认创建的用户可能只限制localhost访问。进入Docker容器内的MySQL,执行以下SQL:GRANT ALL PRIVILEGES ON *.* TO '你的用户名'@'%' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;
- 确认MySQL用户是否允许从
- 核对连接参数一致性
- 确保代码里的数据库地址、端口、用户名、密码,和docker-compose中设置的
MYSQL_USER、MYSQL_PASSWORD、MYSQL_ROOT_PASSWORD完全匹配,注意大小写和特殊字符。
- 确保代码里的数据库地址、端口、用户名、密码,和docker-compose中设置的
- 确认容器网络连通性
- 在VS Code所在机器上,用命令测试Docker容器的MySQL端口是否可访问:
如果不通,检查docker-compose的端口映射是否正确,容器是否正常启动。telnet localhost 3306
- 在VS Code所在机器上,用命令测试Docker容器的MySQL端口是否可访问:
- 检查MySQL初始化时机
- Docker部署MySQL时,初始化脚本(如schema.sql)可能在用户创建前执行,导致权限配置失效。可以把用户授权语句加入初始化脚本,或等容器完全启动后再执行授权操作。
- 清理旧容器和数据卷
- 旧数据卷可能残留无效配置,执行以下命令彻底清理后重新部署:
docker-compose down -v docker-compose up --build
- 旧数据卷可能残留无效配置,执行以下命令彻底清理后重新部署:
内容的提问来源于stack exchange,提问作者Toby_Oldenburg
相关产品推荐
相关产品推荐

