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

如何在MacBook Air上通过Python3.6连接MongoDB Atlas并避免SSL握手错误?

解决MacBook Air上pymongo连接MongoDB Atlas的SSL证书验证失败问题

我之前在Mac上踩过一模一样的坑!Ubuntu上跑好好的,到Mac就报SSL: CERTIFICATE_VERIFY_FAILED,本质原因是Mac上的Python环境默认的SSL根证书配置有问题——不管是系统自带的Python还是brew安装的版本,都容易出现证书链不完整的情况。给你几个靠谱的解决办法,按优先级来:

1. 优先修复Python的证书存储(推荐)

Mac自带的Python通常会在安装目录里有个证书安装脚本,直接跑它就能搞定:

  • 打开Finder,找到/Applications/Python X.X/(把X.X换成你用的Python版本,比如3.10)
  • 双击运行里面的Install Certificates.command,等它执行完再重新跑你的代码

如果是用brew装的Python,直接重新安装并更新证书:

brew reinstall python

2. 临时禁用证书验证(仅测试用!)

如果只是临时测试不想折腾证书,可以在连接时跳过验证,但生产环境绝对不能用,风险很高:

import ssl
from pymongo import MongoClient

# 替换成你的Atlas连接字符串
client = MongoClient(
    "mongodb+srv://<你的用户名>:<你的密码>@cluster0.mongodb.net/",
    ssl_cert_reqs=ssl.CERT_NONE
)

3. 手动指定根证书路径(稳妥的替代方案)

安装certifi包(它维护了一套完整的根证书),然后让pymongo用这个证书:
首先安装certifi:

pip install certifi

然后修改连接代码:

import ssl
import certifi
from pymongo import MongoClient

client = MongoClient(
    "mongodb+srv://<你的用户名>:<你的密码>@cluster0.mongodb.net/",
    ssl_ca_certs=certifi.where()
)

为什么Ubuntu上没问题?因为Ubuntu的Python默认会自动调用系统的根证书存储,而Mac的Python环境(尤其是系统自带的)没有把系统证书和Python的证书池打通,所以就出现了握手失败的情况。

内容的提问来源于stack exchange,提问作者Johnny John Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:40:47