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

为何MongoDB用localhost连接失败,替换为127.0.0.1却正常?

MongoDB localhost连接失败改用127.0.0.1成功的原因

从报错信息MongooseServerSelectionError: connect ECONNREFUSED ::1:27017能直接定位核心问题:IPv6与IPv4的解析及监听不匹配,具体原因如下:

1. localhost的解析优先级变化

现代操作系统(以及Node.js 18+版本)中,localhost会优先被解析为IPv6的本地回环地址::1,而非传统的IPv4地址127.0.0.1。

2. MongoDB默认监听配置限制

MongoDB默认的bindIp配置通常仅设置为127.0.0.1,意味着它只监听IPv4的本地回环端口,未开启IPv6监听。当Mongoose通过解析后的::1尝试连接时,由于MongoDB未在该IPv6端口上监听,就会返回连接拒绝错误。
而直接使用127.0.0.1时,强制指定了IPv4协议,正好匹配MongoDB的监听配置,因此连接成功。

验证方法

  • 查看MongoDB监听端口:
    Linux/macOS执行:

    netstat -an | grep 27017
    

    Windows执行:

    netstat -ano | findstr 27017
    

    如果输出只有127.0.0.1:27017,没有::1:27017,即可确认MongoDB未开启IPv6监听。

  • 检查MongoDB配置文件:
    找到mongod.conf(或mongodb.conf)中的bindIp参数,默认值通常是127.0.0.1,若要支持IPv6连接,可修改为bindIp: 127.0.0.1,::1或启用bindIpAll: true(允许所有地址监听)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:07:07