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

WSL Ubuntu运行MongoDB失败求助:连接127.0.0.1:27017被拒绝

解决WSL Ubuntu中Node连接MongoDB出现ECONNREFUSED的问题

问题本质

你在PowerShell里能正常运行node db.js,是因为代码连接的是Windows主机上运行的MongoDB服务;而WSL Ubuntu的127.0.0.1指向的是WSL自身的虚拟环境,并非Windows主机,所以会触发连接拒绝错误。


解决方法

方法1:替换连接地址为Windows主机内网IP

  1. 查Windows主机IP:在PowerShell执行ipconfig,找到vEthernet (WSL)适配器下的IPv4地址(比如192.168.3.10)
  2. 修改db.js里的MongoDB连接字符串,把127.0.0.1换成这个IP:
    // 修改前
    // const uri = "mongodb://127.0.0.1:27017/your-db-name";
    // 修改后
    const uri = "mongodb://192.168.3.10:27017/your-db-name";
    
  3. 确保Windows防火墙允许27017端口对外访问,或者临时关闭防火墙测试。

方法2:在WSL Ubuntu内安装并运行MongoDB

如果不需要依赖Windows的MongoDB,直接在WSL里部署:

  1. 导入MongoDB密钥:
    wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -
    
  2. 添加软件源:
    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
    
  3. 更新包列表并安装:
    sudo apt update && sudo apt install -y mongodb-org
    
  4. 启动服务并设置开机自启:
    sudo systemctl start mongod
    sudo systemctl enable mongod
    

完成后,WSL里用127.0.0.1就能正常连接MongoDB了。

方法3:用WSL内置域名简化访问

WSL提供了host.docker.internal域名,自动指向Windows主机IP,直接替换连接地址即可:

const uri = "mongodb://host.docker.internal:27017/your-db-name";

这个方法不用手动查IP,适合频繁切换网络的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:15:38