psycopg2连接Azure PostgreSQL遇pg_hba.conf加密错误排查
问题分析与解决方案
核心原因
错误提示里的no encryption是关键——Azure PostgreSQL默认强制要求SSL加密连接,PgAdmin和VS Code这类工具会自动启用SSL配置,而你用psycopg2时没有指定加密选项,导致连接被拒绝。
解决步骤
1. 启用SSL连接(最常用方案)
在psycopg2.connect()中添加sslmode='require'参数,确保连接使用SSL加密:
import psycopg2 conn = psycopg2.connect( host="<hostname>", port=5432, database="<db_name>", user="<user_name>", password="<password>", sslmode='require' )
2. 进阶:验证SSL证书(可选)
如果需要更严格的SSL验证,可以下载Azure提供的根证书,指定sslmode='verify-full'和sslrootcert参数:
conn = psycopg2.connect( host="<hostname>", port=5432, database="<db_name>", user="<user_name>", password="<password>", sslmode='verify-full', sslrootcert='/本地路径/BaltimoreCyberTrustRoot.crt.pem' )
3. 额外排查点
- 确认用户名格式是否正确:Azure PostgreSQL的用户名需要包含服务器后缀,格式为
用户名@服务器名称,如果只填了用户名没加后缀,也可能导致认证问题。
内容的提问来源于stack exchange,提问作者sibiyes
相关产品推荐
相关产品推荐

