调试PyMongo连接失败:Godaddy共享主机报[Errno 111]连接拒绝
调试GoDaddy共享主机MongoDB连接拒绝问题的步骤
针对你遇到的VPS可正常连接MongoDB但GoDaddy共享主机报[Errno 111] Connection refused的问题,可按以下步骤排查:
1. 验证共享主机的出站端口连通性
GoDaddy共享主机通常会限制出站端口,27017(MongoDB默认端口)可能不在开放列表内,这是最常见的原因:
- 用命令行测试端口可达性(如果主机支持telnet/nc):
# 用telnet测试 telnet cluster0.XXXX.mongodb.net 27017 # 或用nc测试 nc -zv cluster0.XXXX.mongodb.net 27017 - 若无法使用命令行,可通过Python脚本测试:
import socket try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('cluster0.XXXX.mongodb.net', 27017)) print("Port 27017 可访问") s.close() except Exception as e: print(f"连接失败: {e}")
如果测试失败,说明主机出站端口被限制,需要联系GoDaddy确认是否开放27017端口。
2. 再次确认MongoDB白名单配置
即使你已添加IP,仍需核对细节:
- 确认共享主机的公网IP(
198.71.231.19)是否准确添加,无位数错误; - 检查CIDR格式是否正确,比如是否误写为
198.71.231.1/32而非198.71.231.19/32; - 可临时将白名单改为
0.0.0.0/0(允许所有IP)测试:若能连接,说明之前的白名单配置有误;若仍无法连接,排除白名单问题。
3. 检查GoDaddy主机的防火墙与代理设置
- 防火墙规则:登录GoDaddy主机管理面板,查看防火墙(如ModSecurity)是否拦截了27017端口的出站请求,如有需添加放行规则;
- 强制代理:部分共享主机强制使用代理服务器,需在PyMongo连接时配置代理:
代理信息可联系GoDaddy客服获取。from pymongo.mongo_client import MongoClient uri = "mongodb+srv://XXXXXX@cluster0.XXXX.mongodb.net/?retryWrites=true&w=majority&ssl=true&ssl_cert_reqs=CERT_NONE" # 替换为GoDaddy提供的代理地址和端口 client = MongoClient(uri, proxy="http://your-godaddy-proxy:port")
4. 更换MongoDB连接字符串格式
你的连接字符串使用srv自动解析集群地址,可尝试使用手动指定节点的旧版连接字符串(从MongoDB Atlas连接面板获取):
uri = "mongodb://XXXXXX@cluster0-shard-00-00.XXXX.mongodb.net:27017,cluster0-shard-00-01.XXXX.mongodb.net:27017,cluster0-shard-00-02.XXXX.mongodb.net:27017/?ssl=true&replicaSet=atlas-XXXXXX-shard-0&authSource=admin&retryWrites=true&w=majority&ssl_cert_reqs=CERT_NONE"
部分共享主机的DNS解析环境可能不支持srv格式。
5. 对齐Python与PyMongo版本
- 确认共享主机与VPS的PyMongo版本一致,运行
pip show pymongo查看版本,不一致则升级/降级到相同版本; - 检查Python版本兼容性,避免VPS用Python3.x而共享主机用Python2.7的情况。
内容的提问来源于stack exchange,提问作者hmghaly
相关产品推荐
相关产品推荐

