【问题标题】:psql: FATAL: Ident authentication failed for user "xxx" with method trustpsql:致命:使用方法信任的用户“xxx”的身份验证失败
【发布时间】:2015-11-29 11:44:41
【问题描述】:

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

【问题讨论】:

  • 上面还有其他pg_hba.conf 条目吗?更改后您是 pg_ctl reload 或 select pg_reload_conf() 吗?
  • pg_hba.conf 中没有其他条目(后面是 IPv6 的另一个条目)。进行更改后,我使用初始化脚本重新启动。 (所以我既没有使用 pg_ctl reload 也没有使用 select pg_reload_conf())
  • ... 如果您使用 -h 127.0.0.1 而不是 -h localhost?
  • 127.0.0.1 有效!但为什么?技术上 127.0.0.1 = localhost...

标签: postgresql centos6


【解决方案1】:

尝试使用 127.0.0.1 而不是 localhost

【讨论】:

    【解决方案2】:

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

    为::1添加另一条规则

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

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 2011-02-25
      • 2013-06-30
      • 2021-10-21
      • 2018-10-09
      • 2013-11-15
      • 1970-01-01
      • 2017-12-16
      • 2018-02-04
      相关资源
      最近更新 更多