Python 3.10连接Planetscale MySQL失败求助:SSL连接错误
可行的Planetscale MySQL连接方案(Python 3.10)
1. 解决mysql-connector-python的SSL验证错误
你遇到的SSL_CTX_set_default_verify_paths failed错误,本质是系统找不到默认SSL根证书,或者库的SSL配置不兼容。可以通过两种方式修复:
方式一:手动指定CA证书
下载Let's Encrypt的根证书(Planetscale使用该证书),然后在连接时指定证书路径:
import mysql.connector try: conn = mysql.connector.connect( user="你的数据库用户名", password="你的数据库密码", host="你的Planetscale主机地址", database="你的数据库名", ssl_ca="/绝对路径/cacert.pem", ssl_disabled=False ) print("连接成功") except Exception as e: print(f"错误: {e}") finally: if 'conn' in locals(): conn.close()
方式二:临时关闭SSL验证(仅测试用,生产不推荐)
如果只是测试连接是否能通,可以关闭SSL验证:
conn = mysql.connector.connect( # 其他参数不变 ssl_disabled=True )
2. 换用pymysql库连接
pymysql对SSL的兼容性更好,很多情况下能绕过这类问题:
先安装依赖:
pip install pymysql
然后用以下代码连接:
import pymysql try: conn = pymysql.connect( host="你的Planetscale主机地址", user="你的数据库用户名", password="你的数据库密码", database="你的数据库名", ssl_mode="REQUIRED" ) # 测试查询 with conn.cursor() as cursor: cursor.execute("SELECT VERSION()") print("连接成功,MySQL版本:", cursor.fetchone()[0]) except Exception as e: print(f"错误: {e}") finally: if 'conn' in locals(): conn.close()
如果还是有SSL问题,试试关闭SSL验证:
conn = pymysql.connect( # 其他参数不变 ssl_mode="DISABLED" )
3. 必查的配置细节
- 确认主机地址是Planetscale提供的完整域名(比如
xxx.us-east-1.psdb.cloud) - 用户名是数据库专属的用户名,不是你的Planetscale账号邮箱
- 密码如果过期,去Planetscale控制台重新生成一个
- 检查你的IP是否在Planetscale的访问白名单里,或者开启了「允许所有连接」选项
内容的提问来源于stack exchange,提问作者axelrothing
相关产品推荐
相关产品推荐

