在 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
Run Code Online (Sandbox Code Playgroud)
我想启用 md5 登录,以便名为“foo”的 PostgreSQL 用户可以访问名为“foo”的数据库。但是,当我添加这一行并重新启动 postgres 时:
local foo foo md5
Run Code Online (Sandbox Code Playgroud)
使用我的普通用户帐户运行 psql -U 'foo' 仍然会产生以下消息:
psql: FATAL: Ident authentication failed for user "foo"
Run Code Online (Sandbox Code Playgroud)
在我可以通过 md5 登录到 'foo' 之前,我必须删除第一个本地行(它有 ident)。
如何在保持身份验证的同时为“foo”启用 md5 身份验证?
https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html表示条目的顺序很重要,具体来说:
由于 pg_hba.conf 记录是针对每次连接尝试顺序检查的,因此记录的顺序很重要。通常,较早的记录将具有紧密的连接匹配参数和较弱的身份验证方法,而较晚的记录将具有较松散的匹配参数和较强的身份验证方法。例如,您可能希望对本地 TCP/IP 连接使用信任身份验证,但对远程 TCP/IP 连接需要密码。在这种情况下,为来自 127.0.0.1 的连接指定信任身份验证的记录将出现在为更广泛的允许客户端 IP 地址指定密码身份验证的记录之前。
(所以尝试颠倒顺序 - 将您添加的行放在顶部)
| 归档时间: |
|
| 查看次数: |
4676 次 |
| 最近记录: |