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

如何在Docker Compose中配置PgBouncer连接池?遇密码类型错误

解决PgBouncer连接PostgreSQL的"wrong password type"错误

问题根源

PostgreSQL 10及以上版本默认采用scram-sha-256密码认证方式,但edoburu/pgbouncer镜像默认未配置支持该认证规则,导致密码类型不匹配,触发08P01: server login failed: wrong password type错误。

修复步骤

1. 配置PgBouncer支持SCRAM认证

修改pgbouncer服务的环境变量,添加PASSWORD_AUTH=scram-sha-256,指定使用与PostgreSQL一致的认证方式:

pgbouncer:
  image: edoburu/pgbouncer
  environment:
    - DB_HOST=postgredb
    - DB_PORT=5432
    - DB_USER=dbuser
    - DB_PASSWORD=dbpassword
    - ADMIN_USERS=postgres,admin
    - PASSWORD_AUTH=scram-sha-256  # 新增该行配置
  ports:
    - "5432:5432"

2. 确保数据库用户密码为SCRAM格式

如果你的PostgreSQL是旧版本升级或提前创建的,用户密码可能还是md5格式,需要重置为scram格式:

  1. 进入PostgreSQL容器:
docker exec -it postgredb psql -U postgres
  1. 执行SQL重置密码(自动转换为scram-sha-256格式):
ALTER USER dbuser WITH PASSWORD 'dbpassword';

3. 优化应用连接字符串

由于已经通过PgBouncer实现连接池,建议关闭应用自带的连接池,避免双层池化降低性能:
将连接字符串中的Pooling=true改为Pooling=false,以commenting.api为例:

ConnectionString=Server=pgbouncer;Port=5432;Database=commentDb;UId=dbuser;Password=dbpassword;Pooling=false;

4. 补充数据库创建(若未存在)

如果commentDb和postDb尚未在PostgreSQL中创建,需先执行创建命令:
在PostgreSQL容器的psql终端中执行:

CREATE DATABASE commentDb;
CREATE DATABASE postDb;

5. 重启容器生效

修改配置后,重启所有相关容器:

docker-compose down && docker-compose up -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:02:31