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

Node.js连接MongoDB报ECONNREFUSED错误的故障排查

故障原因

连接被拒绝的根本原因是:Ubuntu 16.04默认软件源提供的MongoDB安装包,默认配置不开启TCP端口监听,仅通过Unix域套接字提供服务访问,因此你配置的TCP连接串mongodb://localhost:27017/dbname无法建立连接。

从你贴的服务状态可以看到,mongod进程启动时加载了/etc/mongodb.conf配置,且指定了Unix套接字路径--unixSocketPrefix=/run/mongodb,对应配置文件默认注释了TCP绑定相关参数,不会监听127.0.0.1的27017端口,这也是为什么服务显示active(running)但TCP连接被拒。

排查验证

执行以下命令检查端口监听状态,会返回空结果,证明没有进程在监听27017 TCP端口:

sudo ss -tulpn | grep 27017

同时查看/run/mongodb目录,可以找到mongod.sock套接字文件,证明Mongo服务本身运行正常。

解决方法

二选一即可:

方法1:开启MongoDB TCP监听(和你本地Ubuntu22.04环境逻辑一致,推荐)

  1. 编辑MongoDB配置文件:
sudo vim /etc/mongodb.conf
  1. 找到net配置段,补充/修改为以下内容,绑定本地回环地址的27017端口:
net:
  port: 27017
  bindIp: 127.0.0.1
  unixSocketPrefix: /run/mongodb
  1. 保存退出后重启MongoDB服务加载配置:
sudo systemctl restart mongodb
  1. 再次执行端口检查命令,确认mongod已经监听127.0.0.1:27017后,重启Node服务即可正常连接。

方法2:直接通过Unix套接字连接(无需修改MongoDB配置)

修改.env文件中的数据库连接串,直接指向Mongo的Unix套接字路径即可,注意路径中的斜杠需要做URL编码转义为%2F:

DATABASE='mongodb://%2Frun%2Fmongodb%2Fmongod.sock/dbname'

修改后重启Node服务即可正常连接,不需要调整MongoDB侧配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:12:22