在PostgreSQL中启用ident和md5validation

在Fedora 12上,我为自己设置了一个testing数据库,默认情况下pg_hba.conf包含以下内容:

# TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all ident # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident 

我想启用md5login,所以名为“foo”的PostgreSQL用户可以访问名为“foo”的数据库。 但是,当我添加此行并重新启动postgres时:

 local foo foo md5 

使用我的常规用户帐户运行psql -U'foo'仍然会产生以下消息:

 psql: FATAL: Ident authentication failed for user "foo" 

在我可以通过md5login到'foo'之前,我必须删除第一个本地行(有ident)。

如何在保持身份validation身份的同时启用'foo'的md5身份validation?

https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html表示条目的顺序,具体为:

由于每个连接尝试都按顺序检查pg_hba.conflogging,因此logging的顺序非常重要。 通常情况下,较早的logging具有严格的连接匹配参数和较弱的authentication方法,而较晚的logging则具有较宽松的匹配参数和较强的authentication方法。 例如,有人可能希望对本地TCP / IP连接使用信任身份validation,但需要远程TCP / IP连接的密码。 在这种情况下,指定来自127.0.0.1的连接的信任authentication的logging将出现在为更宽范围的允许的客户端IP地址指定密码authentication的logging之前。

(所以尝试颠倒顺序 – 把你添加在顶部的行)