psql:致命:使用方法信任的用户 "xxx" 的身份验证失败

psql: FATAL: Ident authentication failed for user "xxx" with method trust

我通过以下方式(使用 postgres 用户)创建了一个新角色和数据库:

CREATE ROLE xxx LOGIN
  PASSWORD 'CHOOSEAPASSWORD'
  NOSUPERUSER INHERIT NOCREATEDB CREATEROLE REPLICATION;

CREATE DATABASE xxx
  WITH OWNER = xxx
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       CONNECTION LIMIT = -1;

\connect xxx
GRANT ALL ON DATABASE xxx TO xxx;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO xxx;

在 pg_hba.conf 我有以下条目:

local   all             postgres                                trust
local   all             all                                     peer
# IPv4 local connections:
host    all             xxx             127.0.0.1/32            trust
host    all             all             127.0.0.1/32            ident

然而我无法连接

psql -U xxx -h localhost -W

并得到错误

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

我有什么想法可能有误吗? (我使用 PostgreSQL 9.4 和 CentOS 6.7)

您尚未为 IPv6 的本地主机地址定义规则 ::1。您的主机的解析器更喜欢 IPv6 地址 ::1 而不是 IPv4 地址 127.0.0.1。所以带有 trust 的 IPv4 规则永远不会匹配。

::1

添加另一个规则

另一个常见问题(虽然已经为您排除)是没有重新加载配置。

尝试使用 127.0.0.1 而不是 localhost