Node.js Express连接本地MongoDB 27017报错ECONNREFUSED求助
排查MongoServerSelectionError: connect ECONNREFUSED ::1:27017错误及解决方法
常见排查方向
- MongoDB本地服务未启动:这是触发该错误最常见的原因,若服务未运行,客户端无法建立连接
- 连接地址的IP协议不匹配:代码中使用
localhost可能解析为IPv6地址::1,但本地MongoDB服务未开启IPv6监听 - 27017端口被占用:其他程序占用了MongoDB默认端口,导致服务无法正常监听
- MongoDB绑定配置限制:配置文件中
bindIp未包含本地回环地址(IPv4/IPv6),拒绝了本地连接请求 - 版本兼容性问题:mongosh版本与MongoDB服务版本不兼容,导致连接逻辑异常
对应解决方法
1. 启动MongoDB本地服务
- Windows:打开「服务」面板,找到MongoDB服务并启动;或执行命令:
net start MongoDB - macOS:使用Homebrew管理的话执行:
brew services start mongodb-community,直接启动服务则运行:mongod - Linux:执行:
sudo systemctl start mongod
2. 修正连接地址配置
- 强制使用IPv4连接:将代码中的连接字符串从
mongodb://localhost:27017/yourDB改为mongodb://127.0.0.1:27017/yourDB - 开启MongoDB IPv6支持:编辑
mongod.conf配置文件,添加net.ipv6: true,保存后重启服务
3. 释放被占用的27017端口
- Windows:执行
netstat -ano | findstr :27017找到占用端口的PID,在任务管理器中结束对应进程 - macOS/Linux:执行
lsof -i :27017获取进程信息,再用kill -9 <PID>终止占用进程,随后重启MongoDB
4. 调整MongoDB绑定IP配置
- 编辑
mongod.conf,将bindIp设置为bindIp: 127.0.0.1,::1(允许本地IPv4和IPv6连接),或开发环境下直接设置bindIpAll: true(允许所有IP连接),修改后重启服务
5. 验证版本兼容性
- 执行
mongod --version查看服务版本,mongosh 2.0.1要求MongoDB服务版本为4.4及以上,若版本过低请升级服务
6. 检查连接代码正确性
确保连接逻辑无拼写错误,示例正确代码如下:
const mongoose = require('mongoose'); const connectDB = async () => { try { await mongoose.connect('mongodb://127.0.0.1:27017/yourDatabaseName'); console.log('DB connected'); } catch (error) { console.error('MongoDB连接失败:', error.message); process.exit(1); } }; connectDB();
内容的提问来源于stack exchange,提问作者salahaKA
相关产品推荐
相关产品推荐

