MongoServerSelectionError连接求助:ECONNREFUSED ::1:27017
排查MongoServerSelectionError: connect ECONNREFUSED ::1:27017问题
以下是分步排查方案:
1. 确认MongoDB服务的监听地址
先检查MongoDB实际在哪个IP上监听27017端口:
# 用lsof查看(需先安装:sudo apt install lsof / brew install lsof) lsof -i :27017 # 或者用netstat netstat -an | grep 27017
如果输出仅显示127.0.0.1:27017,说明服务只监听IPv4,而应用使用localhost时可能解析到IPv6的::1,导致连接被拒绝。
2. 调整MongoDB的绑定IP配置
找到MongoDB配置文件(常见路径:/etc/mongod.conf、~/mongodb/bin/mongod.conf),修改net段的bindIp:
net: port: 27017 bindIp: 127.0.0.1,::1 # 同时监听IPv4和IPv6
修改后重启服务:
# systemd管理的系统 sudo systemctl restart mongod # 手动启动场景 sudo mongod --config /path/to/mongod.conf --shutdown sudo mongod --config /path/to/mongod.conf
3. 强制应用使用IPv4连接
若不想修改MongoDB配置,直接调整连接字符串:
- 改用IPv4地址:
const dbUrl = 'mongodb://127.0.0.1:27017/macro-tickets'; - 或者添加
family=4参数强制驱动使用IPv4:const dbUrl = 'mongodb://localhost:27017/macro-tickets?family=4';
4. 验证MongoDB服务是否正常运行
- 检查进程是否存在:
ps aux | grep mongod - 若用
sudo mongod启动,默认使用/data/db目录,检查该目录权限:
权限不足时修复:ls -ld /data/dbsudo chown -R mongodb:mongodb /data/db - 查看启动日志排查报错(常见路径:
/var/log/mongodb/mongod.log):tail -20 /var/log/mongodb/mongod.log
5. 检查localhost解析配置
打开/etc/hosts文件,查看localhost的解析规则:
127.0.0.1 localhost ::1 localhost
若同时存在IPv6解析且MongoDB未监听::1,可临时注释::1 localhost行,或按步骤3强制应用使用IPv4连接。
内容的提问来源于stack exchange,提问作者econobro
相关产品推荐
相关产品推荐

