MongoDB本地连接报错MongoServerSelectionError:ECONNREFUSED 求助
MongoServerSelectionError: connect ECONNREFUSED ::1:27017 错误原因及解决方法
错误原因
- MongoDB服务未运行:本地MongoDB服务未启动,导致27017端口无服务响应连接请求。
- IPv6解析冲突:
localhost被系统解析为IPv6地址::1,但MongoDB默认仅监听IPv4的127.0.0.1,无法响应IPv6连接。 - 端口被占用/配置错误:27017端口被其他程序占用,或MongoDB配置文件修改了默认端口,导致连接目标端口无服务。
解决方法
1. 启动MongoDB服务
- Windows:按下
Win+R输入services.msc打开服务管理器,找到「MongoDB Server」服务,右键选择「启动」;若服务未安装,需先完成MongoDB的安装配置。 - macOS/Linux:终端执行命令启动服务:
# systemd系统(如Ubuntu 16.04+、CentOS 7+) sudo systemctl start mongod # 非systemd系统 sudo service mongod start
2. 强制使用IPv4连接
修改连接URI,将localhost替换为127.0.0.1,强制通过IPv4连接MongoDB,避免IPv6解析问题:
const { MongoClient } = require('mongodb'); // 替换localhost为127.0.0.1 const uri = 'mongodb://127.0.0.1:27017/'; const client = new MongoClient(uri); async function run() { try { await client.connect(); await client.db('fruitsDB').command({ ping: 1 }); console.log('Connected successfully to server'); } finally { await client.close(); } } run().catch(console.dir);
3. 检查端口占用情况
- Windows:终端执行以下命令查看27017端口占用情况:
若有其他进程占用,记下进程ID(PID),通过任务管理器结束对应进程,或修改MongoDB端口。netstat -ano | findstr :27017 - macOS/Linux:终端执行以下命令:
使用lsof -i :27017kill -9 <进程PID>结束占用端口的进程,或修改MongoDB配置文件中的端口。
4. 配置MongoDB监听IPv6(可选)
若需要保留localhost连接且使用IPv6,可修改MongoDB配置文件(通常路径为/etc/mongod.conf或C:\Program Files\MongoDB\Server\版本号\bin\mongod.cfg),更新net.bindIp配置:
net: bindIp: ::,127.0.0.1 # 同时监听IPv6和IPv4 port: 27017
修改完成后重启MongoDB服务即可。
内容的提问来源于stack exchange,提问作者ganeshmsk
相关产品推荐
相关产品推荐

