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

Docker部署MySQL无法连接:SQL客户端及Spring Boot均报错

解决Docker化MySQL的连接拒绝问题

核心问题:端口映射错误

MySQL官方镜像默认监听的端口是3306,你启动容器时用了-p 3307:3307,相当于把宿主机3307端口映射到容器内的3307端口,但容器里的MySQL根本没在这个端口运行,自然会出现连接失败。

修复步骤

  1. 停止并删除现有容器

    docker stop container_name
    docker rm container_name
    
  2. 重新启动容器,修正端口映射
    将宿主机3307端口映射到容器的3306端口(容器内MySQL的默认端口):

    docker run --name=container_name -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql
    
  3. 允许root用户远程访问(必要操作)
    默认root用户仅允许本地登录,需进入容器修改权限:

    docker exec -it container_name mysql -u root -p
    

    登录后执行SQL:

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
    FLUSH PRIVILEGES;
    

    (注:%表示允许任意IP访问,生产环境建议限制具体IP范围)

  4. 验证SQL客户端连接

    • 服务器地址:填localhost(容器名仅Docker内部网络可识别,宿主机访问用localhost)
    • 端口:3307
    • 账号:root
    • 密码:password
  5. Spring Boot应用配置调整
    修改application.properties或application.yml中的数据库连接配置:

    spring.datasource.url=jdbc:mysql://localhost:3307/你的数据库名?useSSL=false&serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=password
    

Windows Hyper-V环境额外排查点

  • 确认Windows防火墙未拦截3307端口,可临时关闭防火墙测试,或添加3307端口的入站允许规则。
  • Hyper-V虚拟交换机的端口转发规则无需手动配置,Docker会自动处理端口映射。

内容的提问来源于stack exchange,提问作者Alessio Raddi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:01:10