为何使用Python客户端连接MongoDB时出现SSL握手失败错误?
解决MongoDB SSL握手失败(WinError 10054)的问题
以下是针对你遇到的错误的几种解决方案,按优先级尝试:
升级pymongo版本
你使用的pymongo 3.11版本发布于2020年,和Python 3.11存在兼容性问题,旧版本对新Python的SSL支持可能不完善。执行以下命令升级到适配版本:pip install --upgrade pymongo升级后建议使用MongoDB官方推荐的
ServerApi参数创建客户端,提升连接稳定性。检查IP白名单与网络环境
- 登录MongoDB Atlas后台,确认你的当前公网IP已添加到集群的IP白名单中(Atlas默认拒绝未授权IP的连接)。
- 关闭Windows防火墙或在防火墙规则中允许Python程序出站访问27017端口。
- 如果你使用了代理、VPN或公司内网,暂时关闭这类网络工具后重试连接,它们可能干扰SSL握手流程。
显式配置SSL参数
在创建MongoClient时添加SSL相关参数,强制指定SSL协议版本或临时禁用证书验证(仅用于测试,生产环境请勿使用):from pymongo.mongo_client import MongoClient from pymongo.server_api import ServerApi import ssl uri = "mongodb+srv://admin:<password>@cluster0.hkzvmvh.mongodb.net/?retryWrites=true&w=majority" client = MongoClient( uri, server_api=ServerApi('1'), ssl=True, ssl_version=ssl.PROTOCOL_TLSv1_2, # 强制使用TLS 1.2协议 ssl_cert_reqs='CERT_NONE' # 测试用,生产环境删除此参数 ) try: client.admin.command('ping') print("Pinged your deployment. You successfully connected to MongoDB!") except Exception as e: print(e)确认集群状态
登录MongoDB Atlas后台查看集群是否处于正常运行状态,排除集群维护、节点故障等官方侧问题。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

