Windows终端MongoShell连接Atlas集群失败(常规方案无效)的解决办法
哥们儿,我仔细扒了你的问题和错误日志,先揪出一个极易忽略的细节,再给你几个针对性的排查方向:
1. 修正连接字符串的域名错误
从你的日志里的连接字符串能看到,每个集群节点的域名末尾多了个多余的点:
mongodb://charmsdb-shard-00-02-5s81x.mongodb.net.:27017,...
这里的.net.:得改成.net:,也就是把域名最后那个多余的点删掉。这个小错误会直接导致DNS解析失败,自然连不上任何节点,先把这个改了再试,大概率能解决问题。
2. 测试网络端口连通性
如果改完还是不行,先确认你的网络能打通Atlas节点的27017端口:
- 打开Windows PowerShell,逐个测试节点:
Test-NetConnection charmsdb-shard-00-00-5s81x.mongodb.net -Port 27017 Test-NetConnection charmsdb-shard-00-01-5s81x.mongodb.net -Port 27017 Test-NetConnection charmsdb-shard-00-02-5s81x.mongodb.net -Port 27017 - 如果结果显示
TcpTestSucceeded: False,说明你的网络(ISP、公司防火墙、代理)限制了27017端口,试试切换到手机热点再测试,排除本地网络的锅。
3. 验证SSL连接配置
虽然你用的是版本匹配的Shell,但可以显式指定SSL参数排查证书问题:
- 试试用这条命令连接(仅测试用,生产环境别加
--sslAllowInvalidCertificates):mongo "mongodb://charmsdb-shard-00-00-5s81x.mongodb.net:27017,charmsdb-shard-00-01-5s81x.mongodb.net:27017,charmsdb-shard-00-02-5s81x.mongodb.net:27017/test?authSource=admin&replicaSet=CharmsDB-shard-0&ssl=true" --username <你的用户名> --password <你的密码> --sslAllowInvalidCertificates - 如果这样能连上,说明你的Windows系统缺了MongoDB Atlas需要的根证书,手动安装对应的SSL根证书就行。
4. 确认Atlas集群状态
登录MongoDB Atlas控制台检查:
- 集群状态是不是显示Available(可用)
- 副本集的主、从节点是不是都正常运行
- 有没有正在进行的维护任务或者故障告警
5. 切换DNS服务器
有时候本地DNS抽风会导致解析不了Atlas的节点域名,试试换公共DNS:
- 打开Windows网络设置,把DNS改成
8.8.8.8(Google DNS)或者1.1.1.1(Cloudflare DNS) - 刷新DNS缓存:命令提示符里执行
ipconfig /flushdns - 再尝试连接
你的错误日志参考:
MongoDB shell version v4.0.10
Enter password:
connecting to: mongodb://charmsdb-shard-00-02-5s81x.mongodb.net.:27017,charmsdb-shard-00-01-5s81x.mongodb.net.:27017,charmsdb-shard-00-00-5s81x.mongodb.net.:27017/test?authSource=admin&gssapiServiceName=mongodb&replicaSet=CharmsDB-shard-0&ssl=true
2019-07-09T12:42:04.136+0200 I NETWORK [js] Starting new replica set monitor for CharmsDB-shard-0/charmsdb-shard-00-02-5s81x.mongodb.net.:27017,charmsdb-shard-00-01-5s81x.mongodb.net.:27017,charmsdb-shard-00-00-5s81x.mongodb.net.:27017
2019-07-09T12:42:04.256+0200 W NETWORK [js] Unable to reach primary for set CharmsDB-shard-0
2019-07-09T12:42:04.256+0200 I NETWORK [js] Cannot reach any nodes for set CharmsDB-shard-0. Please check network connectivity and the status of the set. This has happened for 1 checks in a row.
内容的提问来源于stack exchange,提问作者Dr Immersion

