【问题标题】:psql: error: could not connect to server: FATAL: Peer authentication failed for user "postgres"psql:错误:无法连接到服务器:致命:用户“postgres”的对等身份验证失败
【发布时间】:2020-02-25 03:57:55
【问题描述】:

我使用此处的命令 [https://www.postgresql.org/download/linux/redhat/]

安装并设置了 postgresql-12
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql12
yum install postgresql12-server
/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12
systemctl start postgresql-12

然后我尝试登录数据库

psql postgres postgres

我收到了错误

psql: error: could not connect to server: FATAL:  Peer authentication failed for user "postgres"

我的系统上有两个 pg_hba.conf 文件。我按照此处的建议检查了身份验证设置,如下所示 [psql: FATAL: Ident authentication failed for user "postgres"

/data/pg_data_dir/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

/var/lib/pgsql/12/data/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5  
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

身份验证设置看起来不错,所以我不知道从这里做什么。

【问题讨论】:

  • 您需要重新加载配置文件才能使用更新的pg_hba.conf 文件——您可以在尝试psql 之前重新启动postgres 或su - postgres。一旦你进入psql,发出select pg_reload_conf();
  • 您的错误消息指出peer 身份验证失败。您显示的pg_hba.conf 文件不包含使用peer 身份验证方法的规则。您确定没有其他pg_hba.conf 文件吗?检查postgresql.conf 文件中的hba_file 条目。

标签: postgresql


【解决方案1】:

编辑 - 使其更具结构性和可用性。

首先,您需要了解每种身份验证方法的含义,here 中有大量关于此的信息。长话短说,在这个阶段,您可能会感兴趣的是md5,它是一个散列密码,或者trust,它不是密码。

在您的机器上安装 postgres 后,您需要成为 postgres 用户,然后尝试 psql

~# su -l postgres --assume you're postgres
~$ psql --connect

psql (xx.x ))
Type "help" for help.

postgres=#

进入后,您可以为该用户设置新密码:

postgres=# \password postgres

为防止这种情况发生,您需要向 postgres 询问 hba 文件在哪里:

postgres=# SHOW hba_file;

使用您喜欢的文本编辑器并对其进行修改以满足您的需求。

另外你需要确保你重新加载postgresql服务,命令是:

sudo systemctl reload postgresql-12.service

【讨论】:

  • psql -U postgres 即使在重新启动后也会返回相同的错误。谢谢
  • 你能不能试试下面的命令:su -l postgres 后跟psql
  • psql:错误:无法连接到服务器:致命:用户“postgres”的密码验证失败
  • sudo -u postgres psql 呢?这是返回相同的错误吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 2013-06-30
  • 1970-01-01
  • 2021-07-03
  • 2015-02-17
  • 1970-01-01
  • 2016-03-01
相关资源
最近更新 更多