PostgreSQL因SHA256认证无法连接 如何在连接串中使用MD5格式密码
PostgreSQL MD5认证连接配置错误解决方案
问题根因
你之前直接对密码单独生成MD5/SHA256哈希的方式不符合PostgreSQL的认证规则:PostgreSQL的MD5认证要求哈希值为明文密码和用户名拼接后的MD5结果加上固定md5前缀,而非单纯的密码哈希值。
解决方案
方案1:生成符合规则的哈希替换连接串密码
- 标准PostgreSQL MD5密码哈希生成规则:
md5+ MD5(明文密码 + 数据库用户名)的32位小写结果 - 你的场景计算参数:
- 明文密码:
testpassword - 数据库用户名:
postgres - 待哈希拼接字符串:
testpasswordpostgres
- 明文密码:
- 最终生成的合法密码值:
md56b8fa0d2a4f18c70f4b350c7436e7d8a - 替换后的连接串:
"Server=localhost;Port=5432;Database=MAXxKYC;User Id=postgres;Password=md56b8fa0d2a4f18c70f4b350c7436e7d8a;"
注意:如果你使用的PostgreSQL驱动会自动处理密码加密逻辑,无需手动替换为哈希值,直接填写明文密码即可,驱动会自动完成符合规则的加密流程。
方案2:修改数据库端认证规则(无需修改连接串,操作更简单)
- 打开PostgreSQL安装目录下的
pg_hba.conf配置文件 - 找到本地连接对应的规则行,默认配置通常为:
host all all 127.0.0.1/32 scram-sha-256
- 将末尾的
scram-sha-256修改为md5或者password - 重启PostgreSQL服务使配置生效
- 直接使用原有带明文密码的连接串即可正常连接
内容的提问来源于stack exchange,提问作者triplese7en
相关产品推荐
相关产品推荐

