无法将PGadmin连接至Docker Compose部署的PostgreSQL容器
解决Docker PostgreSQL外部PGadmin认证失败问题(SCRAM-SHA-256)
核心原因
启用scram-sha-256认证后,外部客户端(如PGadmin)的认证方式与PostgreSQL服务器要求不匹配,或PostgreSQL的远程连接规则未配置为使用SCRAM认证。
解决方案
1. 确保PGadmin支持SCRAM-SHA-256
PGadmin 4.10及以上版本才支持SCRAM-SHA-256认证。如果你的PGadmin版本低于这个版本,直接升级到最新版即可解决基础兼容性问题。
2. 修改PostgreSQL的pg_hba.conf配置
默认的pg_hba.conf可能对远程连接使用md5认证,与你启用的scram-sha-256冲突,需调整:
- 进入PostgreSQL容器:
docker exec -it <你的postgres容器名> bash - 编辑
pg_hba.conf文件:vi /var/lib/postgresql/data/pg_hba.conf - 找到远程连接规则行(通常是
host all all 0.0.0.0/0 md5),将认证方法改为scram-sha-256:host all all 0.0.0.0/0 scram-sha-256 - 重启容器使配置生效:
docker restart <你的postgres容器名>
3. 验证PostgreSQL的密码加密配置
确保服务器端的密码加密方式确实是scram-sha-256:
- 进入容器内的PostgreSQL命令行:
psql -U postgres - 查看当前加密设置:
SHOW password_encryption; - 如果输出不是
scram-sha-256,需修改postgresql.conf:
找到vi /var/lib/postgresql/data/postgresql.confpassword_encryption项,设置为:password_encryption = scram-sha-256 - 重启容器后,重新设置用户密码(旧密码可能是MD5加密,不兼容):
ALTER USER postgres WITH PASSWORD '你的POSTGRES_PASSWORD';
4. 配置PGadmin的认证方法
在PGadmin创建/编辑服务器连接时:
- 切换到「高级」标签页
- 将「认证方法」手动选择为
SCRAM-SHA-256 - 保存后重新尝试连接
内容的提问来源于stack exchange,提问作者Luca Esposito
相关产品推荐
相关产品推荐

