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

使用psycopg2连接AWS PostgreSQL遇SCRAM认证错误求助

问题:psycopg2连接PostgreSQL触发SCRAM认证版本错误

报错信息

执行连接代码:

>>> c = psycopg2.connect(dbname="test", user="user", password="***", host="HOSTNAME")

触发如下回溯:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/var/app/venv/staging-LQM1lest/lib64/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: SCRAM authentication requires libpq version 10 or above

环境信息

  • 操作系统:Amazon Linux 2
  • Python版本:3.8.16
  • 系统已安装libpq版本:libpq.aarch64 14.3-2.amzn2.0.2(通过yum list installed确认)

解决方案

核心原因

系统虽安装了高版本libpq,但当前psycopg2绑定的是旧版本libpq库,导致不支持SCRAM认证。

解决步骤

  1. 确认psycopg2绑定的libpq版本
    运行以下代码检查版本:

    import psycopg2
    print("psycopg2内置libpq版本:", psycopg2.__libpq_version__)
    print("系统链接的libpq版本:", psycopg2.extensions.libpq_version())
    

    若输出版本低于10,说明绑定了旧库。

  2. 重新编译安装psycopg2
    先卸载现有psycopg2包:

    pip uninstall psycopg2 psycopg2-binary -y
    

    设置环境变量指向PostgreSQL 14的库和头文件目录,再编译安装:

    export PATH=/usr/pgsql-14/bin:$PATH
    export LD_LIBRARY_PATH=/usr/pgsql-14/lib:$LD_LIBRARY_PATH
    export CFLAGS="-I/usr/pgsql-14/include"
    export LDFLAGS="-L/usr/pgsql-14/lib"
    pip install psycopg2 --no-binary :all:
    
  3. 验证连接
    重新执行连接代码,确认是否成功建立连接。

替代方案

若编译安装有困难,可尝试安装最新版psycopg2-binary,它内置了兼容SCRAM的libpq:

pip install --upgrade psycopg2-binary

内容的提问来源于stack exchange,提问作者Peter Fankhänel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:33:32