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

PostgreSQL中SCRAM认证失败排查:配置后仍提示密码错误

问题解答

直接提交scram-sha-256格式密码是否正确?

不正确。psql连接时不需要手动输入scram-sha-256哈希后的密码,你只需要输入明文密码即可——psql会自动与PostgreSQL服务器协商认证机制,将明文密码转换为符合要求的scram-sha-256格式进行传输验证。手动输入哈希值相当于把哈希字符串当作明文密码提交,自然会验证失败。

可能导致认证失败的其他问题

  • 用户密码未使用scram-sha-256哈希存储
    即使pg_hba.conf配置了scram-sha-256认证,若用户的密码还是以md5或其他旧格式存储,服务器会拒绝认证。可以通过以下SQL检查用户的密码哈希格式:

    SELECT usename, passwd FROM pg_shadow;
    

    若passwd字段以SCRAM-SHA-256$开头则为正确格式,否则需要重新设置密码(设置时服务器会自动用scram-sha-256哈希存储):

    ALTER USER your_username WITH PASSWORD 'your_plaintext_password';
    
  • pg_hba.conf配置未生效
    修改pg_hba.conf后需要重新加载PostgreSQL配置才能生效,执行以下命令:

    # 适用于systemd管理的系统
    sudo systemctl reload postgresql
    # 或使用pg_ctl工具
    pg_ctl reload -D /path/to/your/postgresql/data
    

    同时要确认pg_hba.conf中对应连接规则的认证方式确实是scram-sha-256,且规则的优先级正确(PostgreSQL会匹配第一条符合条件的规则)。

  • postgresql.conf中的password_encryption参数未设置为scram-sha-256
    该参数控制新密码的默认加密格式,若未设置为scram-sha-256,后续新建用户或修改密码时仍会使用旧格式。检查并修改后同样需要重新加载配置:

    password_encryption = scram-sha-256
    
  • 连接时指定的认证方式与配置不匹配
    若psql连接时手动指定了--auth=md5或其他认证方式,会覆盖pg_hba.conf的配置,导致认证失败。确保连接命令没有强制指定错误的认证方式,直接使用:

    psql -U your_username -d your_database
    
  • 密码输入错误
    虽然听起来基础,但明文密码输入错误(包括大小写、特殊字符)是常见原因,确认输入的明文密码与设置用户时的密码完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:44:55