Ubuntu服务器通过Node.js连接MongoDB Atlas失败求助
解决Ubuntu服务器连接MongoDB Atlas时的querySrv ENOTFOUND错误
可能的解决方案
1. 排查DNS解析问题
- 先在Ubuntu服务器上手动测试SRV记录解析,执行命令:
如果没有返回有效解析结果,说明服务器DNS无法识别SRV记录,需要更换DNS服务器:dig _mongodb._tcp.tha.ovfl8.mongodb.net SRV- 临时修改:编辑
/etc/resolv.conf,添加或替换为:nameserver 8.8.8.8 nameserver 1.1.1.1 - 永久修改(针对Ubuntu 18.04+用netplan的情况):编辑
/etc/netplan/00-installer-config.yaml,在nameservers下添加DNS地址,然后执行sudo netplan apply生效。
- 临时修改:编辑
2. 切换为非SRV格式的连接字符串
MongoDB Atlas提供两种连接格式,SRV格式依赖DNS解析,若解析有问题,改用标准连接字符串:
- 登录MongoDB Atlas控制台,进入对应集群的「Connect」→「Connect your application」
- 选择「Standard connection string」,复制生成的连接地址
- 替换代码中原有的SRV格式连接字符串,标准格式示例:
mongodb://<username>:<password>@tha-shard-00-00.ovfl8.mongodb.net:27017,tha-shard-00-01.ovfl8.mongodb.net:27017,tha-shard-00-02.ovfl8.mongodb.net:27017/<dbname>?ssl=true&replicaSet=atlas-ovfl8-shard-0&authSource=admin&retryWrites=true&w=majority
3. 检查Node.js版本(若使用Node.js连接)
旧版本Node.js对SRV记录的支持不完善,确保Node.js版本≥12.x:
- 查看当前版本:
node -v - 若版本过低,用nvm升级(推荐方式):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash nvm install --lts
4. 检查服务器网络限制
- 确认Ubuntu服务器的防火墙(ufw)允许DNS查询(UDP 53端口)和MongoDB出站连接(TCP 27017端口):
sudo ufw allow out 53/udp sudo ufw allow out 27017/tcp - 同时检查云服务商的安全组规则,确保出站方向开放上述端口。
内容的提问来源于stack exchange,提问作者writeToBhuwan
相关产品推荐
相关产品推荐

