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

Docker环境下Node.js应用无法连接MySQL服务问题求助

报错原因说明

Error: connect ECONNREFUSED 127.0.0.1:3306 出现的核心原因是Docker容器拥有独立的网络命名空间,容器内部的127.0.0.1指向的是容器自身的环回地址,既不是宿主机地址,也不是其他Docker容器的地址。该问题确实和MySQL运行在独立容器直接相关,但本质是网络配置错误,并非容器化部署本身的问题。

连接Docker内部MySQL的解决步骤

  • 第一步:创建自定义Docker网络,用于容器间通信:
    docker network create app-net
    
  • 第二步:启动MySQL容器时添加参数--network app-net --name mysql,将MySQL容器加入该网络并固定容器名称
  • 第三步:修改Node.js应用中的数据库连接配置,将原127.0.0.1的数据库地址替换为MySQL容器的名称mysql,Docker内置DNS会自动解析到对应容器的IP
  • 第四步:修改Node.js容器启动命令,添加--network app-net参数,完整命令如下:
    winpty docker run \
        -it \
        --rm \
        -v ${PWD}:/app \
        -v /app/node_modules \
        -p 4001:4000 \
        -e CHOKIDAR_USEPOLLING=true \
        --network app-net \
        gdns/node-app
    

连接宿主机WAMP中MySQL的实现方法

可以正常连接,按以下步骤配置即可:

  • 修改WAMP的MySQL配置,将绑定地址从127.0.0.1改为0.0.0.0,重启WAMP的MySQL服务
  • 进入MySQL执行授权命令,允许Docker网段的IP访问:
    GRANT ALL PRIVILEGES ON 你的数据库名.* TO '你的数据库账号'@'172.17.0.0/16' IDENTIFIED BY '你的数据库密码';
    FLUSH PRIVILEGES;
    
  • 修改Node.js应用的数据库连接地址,WSL2环境下直接填Docker内置域名host.docker.internal即可自动解析到宿主机IP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:54:06