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

psycopg2提示SCRAM认证需libpq10及以上,已装12.8仍报错如何解决?

问题原因
  1. psycopg2-binary包默认内置了静态编译的libpq库,不会优先调用系统安装的libpq。你使用的2.9.1版本内置的libpq版本低于10,因此触发SCRAM认证报错。
  2. 修改PostgreSQL认证方式后未生效,是因为仅修改配置文件不会变更已存储的用户密码哈希算法:原有用户密码仍是SCRAM格式,即使配置改为md5,认证逻辑依然不匹配。
排查验证

先执行以下命令确认psycopg2实际调用的libpq版本:

python -c "import psycopg2; print(psycopg2.__libpq_version__)"

如果输出值小于100000,即可确认是psycopg2使用了低于10版本的libpq导致的问题。

解决方案

你可以根据自己的需求选择任意一种方案:

  • 方案1:替换为源码编译的psycopg2,调用系统已安装的高版本libpq
    先安装编译依赖:
    sudo apt install -y libpq-dev python3-dev
    
    卸载原有psycopg2相关包:
    pip uninstall -y psycopg2-binary psycopg2
    
    重新安装源码编译版本:
    pip install psycopg2
    
  • 方案2:直接升级psycopg2-binary到高版本
    2.9.3及以上版本的psycopg2-binary内置的libpq版本已高于10,直接执行升级即可:
    pip install --upgrade psycopg2-binary>=2.9.3
    
  • 方案3:完全适配MD5认证(如需保留当前版本的psycopg2-binary)
    1. 确认postgresql.conf中配置为password_encryption = md5,pg_hba.conf中对应应用连接来源的行认证方式设置为md5
    2. 重启PostgreSQL服务
    3. 登录PostgreSQL终端,重新设置对应用户的密码,触发MD5格式哈希生成:
    ALTER USER 你的数据库用户名 WITH PASSWORD '你的数据库密码';
    

内容的提问来源于stack exchange,提问作者David Co

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:48:01