在Fedora 12上,我为自己设置了一个测试数据库,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
我想启用 md5 登录,以便名为“foo”的 PostgreSQL 用户可以访问名为“foo”的数据库。但是,当我添加此行并重新启动 postgres 时:
local foo foo md5
使用我的常规用户帐户运行 psql -U'foo' 仍然会产生以下消息:
psql: FATAL: Ident authentication failed for user "foo"
我必须先删除第一个本地行(具有 ident),然后才能通过 md5 登录到“foo”。
我怎样才能为‘foo’启用 md5 身份验证,同时保留现有的身份身份验证?
答案1
https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html表示条目的顺序很重要,具体来说:
由于每次连接尝试都会按顺序检查 pg_hba.conf 记录,因此记录的顺序非常重要。通常,较早的记录将具有严格的连接匹配参数和较弱的身份验证方法,而较晚的记录将具有较宽松的匹配参数和较强的身份验证方法。例如,有人可能希望对本地 TCP/IP 连接使用信任身份验证,但对远程 TCP/IP 连接则需要密码。在这种情况下,为来自 127.0.0.1 的连接指定信任身份验证的记录将出现在为更广泛的允许客户端 IP 地址指定密码身份验证的记录之前。
(因此尝试反转顺序 - 将要添加的行放在顶部)