You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署MySQL后用户tiennq连接Access Denied问题求助

解决Docker MySQL容器连接时的1045权限错误(Access Denied)

你遇到的error 1045(28000) access denied for user 'tiennq' @ '172.17.0.1'错误,核心原因是MySQL用户tiennq未被授权从172.17.0.1(Docker宿主机网关IP)访问数据库,以下是具体解决方法:

方法一:授权用户跨IP访问

  1. 进入Docker容器内的MySQL控制台,用root用户登录:
docker exec -it mysql-spring-boot-tutorial mysql -u root -p

输入root密码123456后进入MySQL命令行。

  1. 给tiennq用户授权访问权限:
  • 允许任意IP访问(适合开发环境):
GRANT ALL PRIVILEGES ON test_db.* TO 'tiennq'@'%' IDENTIFIED BY '123456';
  • 仅允许172.17.0.1访问(更安全):
GRANT ALL PRIVILEGES ON test_db.* TO 'tiennq'@'172.17.0.1' IDENTIFIED BY '123456';
  1. 刷新权限使配置生效:
FLUSH PRIVILEGES;
  1. 退出MySQL和容器,重新执行你的连接命令即可。

方法二:重置容器与数据卷(用户创建异常时)

如果容器初始化时tiennq用户未正确创建,可通过以下步骤重置:

  1. 停止并删除容器(因使用--rm参数,停止后容器会自动删除):
docker stop mysql-spring-boot-tutorial
  1. 删除关联数据卷,清除旧用户配置:
docker volume rm mysql-spring-boot-tutorial-volume
  1. 重新执行原docker run命令创建容器:
docker run -d --rm  --name mysql-spring-boot-tutorial -e MYSQL_USER=tiennq -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_PASSWORD=123456 -e MYSQL_DATABASE=test_db -p 3309:3306 --volume mysql-spring-boot-tutorial-volume:/var/lib/mysql mysql:latest
  1. 等待容器初始化完成后,再尝试连接。

方法三:使用容器IP直接连接

  1. 查询Docker容器的IP地址:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-spring-boot-tutorial
  1. 用容器IP代替localhost执行连接命令:
mysql -h <查询到的容器IP> -P 3306 -u tiennq -p

输入密码123456即可连接。

内容的提问来源于stack exchange,提问作者Tiến Quang Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:55:47