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

为何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:01:22