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
我通过以下方式(使用 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