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

MongoDB局域网副本集连接失败求助及解决方法

问题:跨机器连接WSL2上MongoDB副本集失败,报错ECONNREFUSED 127.0.0.1:27017

环境与现象

  • 在WindowsPC1的WSL2上部署MongoDB副本集,PC1局域网IP为192.168.10.108
  • 另一台WindowsPC2(IP192.168.10.106)通过MongoDB Compass连接:
    • 使用直接连接字符串可正常访问:
      mongodb://admin:xxxxxx@192.168.10.108:27017/?directConnection=true
      
    • 使用副本集连接字符串时失败,报错connect ECONNREFUSED 127.0.0.1:27017,连接字符串:
      mongodb://admin:xxxxx@192.168.10.108:27017,192.168.10.108:27018,192.168.10.108:27019/?replicaSet=rs0&retryWrites=true&w=majority&readPreference=secondary
      
  • 补充:PC2的WSL2中用mongosh --host 192.168.10.108可直接连接成功,但使用副本集连接字符串仍报相同错误

解决方法

问题根源:MongoDB副本集初始配置中,所有成员的host字段使用了localhost。当客户端以副本集模式连接时,MongoDB会将配置中的节点地址返回给客户端,客户端尝试连接127.0.0.1:27017,而该地址在PC2上指向自身,导致连接失败。

修改步骤:

  1. 登录到MongoDB副本集的主节点,执行命令查看当前副本集配置:
    var oldConf = rs.conf()
    // 原配置示例:
    /*
    {
      members:[{
        host: 'localhost:27017'
      },{
        host: 'localhost:27018'
      },{
        host: 'localhost:27019'
      }]
    }
    */
    
  2. 将所有成员的host替换为PC1的局域网主机名(或直接使用PC1的局域网IP192.168.10.108),然后重新加载配置:
    oldConf.members[0].host = 'xxx.ronnie:27017'
    oldConf.members[1].host = 'xxx.ronnie:27018'
    oldConf.members[2].host = 'xxx.ronnie:27019'
    rs.reconfig(oldConf)
    
    注:xxx.ronnie为PC1的局域网主机名,需确保PC2能通过该主机名解析到PC1的IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:35:44