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

py-postgresql连接Docker部署的PostgreSQL14出现AuthenticationMethodError错误

问题根因

你遇到的报错核心原因是 py-postgresql==1.2.2 版本停止更新时间较早,不支持 PostgreSQL 10 及以上版本默认启用的 scram-sha-256 密码认证机制:报错信息里的 unsupported authentication request '<unknown>'(10) 中的类型码10就是 scram-sha-256 认证的官方标识,该驱动仅支持MD5、crypt、明文、trust四种认证方式,和日志提示完全匹配。
另外你给出的测试代码存在笔误:postgressql.open 多写了一个s,正确写法应为 postgresql.open,可先修正笔误后再验证。

解决方案

方案1:修改PostgreSQL配置兼容旧驱动(临时适配)

适合暂时不想替换驱动的场景,操作步骤如下:

  • 进入Docker部署的PostgreSQL容器,修改 postgresql.conf 配置文件:
# 将默认的password_encryption参数值从scram-sha-256改为md5
password_encryption = md5
  • 重启PostgreSQL服务使配置生效
  • 重新设置数据库用户密码,新密码会自动以MD5格式存储:
ALTER ROLE postgres WITH PASSWORD '你的原密码';
  • 修改 pg_hba.conf 配置文件,将对应连接段的认证方式从 scram-sha-256 改为 md5:
# 示例对应本地连接的规则,可根据你的实际访问来源调整
host    all             all             127.0.0.1/32            md5
  • 执行 pg_ctl reload 重载配置后,即可用py-postgresql正常连接。

方案2:替换为仍在维护的PostgreSQL Python驱动(推荐)

py-postgresql已多年未更新迭代,建议替换为更稳定、兼容性更好的驱动:

  • 同步场景推荐使用 psycopg2-binary,安装和连接示例:
pip install psycopg2-binary
import psycopg2
conn = psycopg2.connect(
    host="localhost",
    port=5432,
    user="postgres",
    password="你的密码",
    database="postgres"
)
  • 异步场景推荐使用 asyncpg。

内容的提问来源于stack exchange,提问作者Steven Ensslen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:54:03