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
- 查Windows主机IP:在PowerShell执行
ipconfig,找到vEthernet (WSL)适配器下的IPv4地址(比如192.168.3.10) - 修改
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"; - 确保Windows防火墙允许27017端口对外访问,或者临时关闭防火墙测试。
方法2:在WSL Ubuntu内安装并运行MongoDB
如果不需要依赖Windows的MongoDB,直接在WSL里部署:
- 导入MongoDB密钥:
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add - - 添加软件源:
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 - 更新包列表并安装:
sudo apt update && sudo apt install -y mongodb-org - 启动服务并设置开机自启:
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
相关产品推荐
相关产品推荐

