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

pgbouncer配置SCRAM-SHA-256认证及userlist.txt生成方法咨询

SCRAM-SHA-256在pgbouncer中的配置相关问题解答

1. storedkey和serverkey的定义

二者都是SCRAM-SHA-256认证协议中的标准密钥:

  • storedkey:由用户明文密码经过哈希迭代、加盐计算后生成,用于服务端验证客户端发送的身份凭证合法性
  • serverkey:同样由明文密码按照标准算法生成,用于服务端向客户端证明自身持有正确的密码衍生信息,避免客户端连接到伪造服务端
    两个密钥都不需要手动计算,PostgreSQL存储的SCRAM格式密码中已经包含了完整的上述字段,完全符合pgbouncer要求的格式。

2. 符合要求的userlist.txt条目生成方法

方法1:直接从PostgreSQL系统表导出(最稳妥)

登录PostgreSQL超级用户,执行以下SQL查询即可直接获取可直接写入userlist.txt的完整条目:

SELECT rolname || ' ' || rolpassword FROM pg_authid WHERE rolname = '你的pgbouncer连接用户名';

将查询得到的整行结果直接复制粘贴到userlist.txt中即可。

方法2:通过PostgreSQL内置函数生成

如果不想查询系统表,也可以直接调用内置函数指定明文密码生成对应哈希串:

SELECT pg_scram_sha_256('你的用户明文密码');

得到哈希串后,在userlist.txt中按用户名 哈希串的格式写入即可。

3. 配套工具说明

  • pgbouncer没有类似pgpool的pg_enc的独立加密工具,生产环境更推荐直接从PostgreSQL中获取已有哈希值,避免明文密码泄露风险
  • 从pgbouncer 1.17版本开始,官方附带的mkauth.py脚本支持直接连接PostgreSQL批量生成符合SCRAM格式要求的userlist.txt文件,无需手动拼接内容

4. auth_query配置示例

如果使用auth_query模式完成认证,需要在pgbouncer.ini中做如下配置:

auth_type = scram-sha-256
auth_query = SELECT usename, passwd FROM pg_shadow WHERE usename=$1
auth_user = 有权限查询pg_shadow的用户名

注意pgbouncer版本最低需要1.16及以上才支持SCRAM-SHA-256认证,低版本需先升级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:42:02