encryption_method与hba中的method的相容性
不同的基于口令的认证方法的可用性取决于用户的口令在服务器上是如何被加密(或者更准确地说是哈希)的。这由设置口令时的配置参数password_encryption控制。如果口令使用scram-sha-256设置加密,那么它可以被用于认证方法scram-sha-256和password(但后一种情况中口令将以明文传输)。如上所释,在这种情况下,指定的认证方法md5将自动切换到使用scram-sha-256方法,如果口令使用md5设置加密,那么它仅能用于md5和password认证方法说明(同样,后一种情况中口令以明文传输)。G为了简化从md5方法到新的SCRAM方法的转换,如果在pg_hba.conf中将认证方法设置为md5,但服务器上用户的密码是SCRAM 加密的,PG会自动选择基于SCRAM的认证,这样就给到了一个过渡时间。
postgresql.conf (password_encryption) pg_shadow(select usename,passwd from pg_shadow) | pg_hba.conf (method) | PASS(Y/N) |
scram-sha-256[:gXZikjqxC79DooNOPiZdVg==..] | md5 | Y |
scram-sha-256[:gXZIkjqxC79DooNOPiZdVg==..] | scram-sha-256 | Y |
md525e68c2fa604c27b505dd92da46ede22 | md5 | Y |
md525e68c2fa604c27b505dd92da46ede22 | scram-sha-256 | N |