PostgreSQL 对等身份验证用户映射失败

PostgreSQL 对等身份验证用户映射失败

以 root 用户身份登录服务器后,我需要通过 Unix 套接字以 postgres 用户身份进入数据库。这是我的 pg_ident.conf:

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
testmap         postgres                postgres
testmap         root                    postgres

这是我的pg_hba.conf:

# TYPE   DATABASE   USER   ADDRESS   METHOD
local    all        all              peer map=testmap

我已经执行了 pg_ctl reload,甚至重启了 postgresql 服务和服务器本身。通过 psql 连接时,我收到以下信息:

[root@<Server> ~]# psql -d postgres
psql: FATAL:  no pg_hba.conf entry for host "[local]", user "root", database "postgres", SSL off

检查数据库内的 hba_file 和 ident_file,并确认我正在编辑的位置是正确的。

我还缺少其他配置吗?我必须在数据库中创建角色/用户 root 吗?

我已经在这里和 stackoverflow 上寻找类似的问题两天了,大多数问题只是忘记在 pg_hba.conf 中包含 map=<>。我还相信我所做的符合 PostgreSQL 手册中的说明。

顺便说一句,我使用的是 PostgreSQL 9.5.12。谢谢

答案1

我今天遇到了同样的问题,结果发现 Postgres 实际上会尝试承担通过参数传递的角色-U。对我有用的是:

# psql -U postgres -d postgres

然后,身份验证将使用您的套接字对等用户名(root),但您在身份验证后将成为postgres。我不确定为什么 Postgres 不自行映射用户 - 这可能是文档问题,而不是错误。

相关内容