7

我正在尝试使用以下设置在 pgadmin3 中注册新服务器:

Name: postgres
Host: localhost
Username: postgres
Password: <password which works for psql>
Service: empty or postgres

但它显示错误:

FATAL: Ident authentification failed for user "postgres"

我已经重新启动了 postgresql 服务,但无济于事。

/var/lib/pgsql/data/pg_hba.conf 的内容:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               ident

编辑:工具-> 服务器配置-> pg_hba.conf 是灰色的。

4

3 回答 3

5

看起来 PgAdmin-III 可能默认通过 IPv6 连接,因此它使用ident与 localhost 的 IPv6 地址匹配的行,::1/128.

如果要使用密码身份验证,您可能需要:

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

我不确定你为什么将 unix 域套接字行设置为trust,但如果它只是一台开发机器,那可能没问题,所以保持不变。ident但是,将其设置为(如果您希望 unix 用户必须与 Pg 用户相同)或md5(对于本地 unix 套接字上的密码验证)确实要安全得多。

pg_hba.conf如果 PgAdmin-III 没有编辑权限,您需要直接在文本编辑器中进行编辑。postgres您可以通过以用户身份运行 PgAdmin-III sudo,但仅使用nano或类似的命令行文本编辑器修改pg_hba.conf.

密码有效,psql因为psql除非另有说明,否则将通过 unix 域套接字连接,并且您将其设置为trust. 您可能会发现您可以提供任何密码psql并且它仍然可以工作,因为它从未被要求实际提供密码,它只是被自动信任。

于 2012-09-19T05:53:20.497 回答
4

是的,每个 pgadmin 新手用户都会看到这种类型的错误。我找到了这个解决方案,它对我有用。

sudo -u postgres psql

这将询问您的系统密码,然后您将收到 postgres 提示。

然后在 psql 中键入以下命令来更改密码。

\password

现在输入新密码并重新输入。

于 2014-10-01T11:39:21.953 回答
0

PostGreSQL 帐户调试步骤(特定于 Linux):

  1. 确保你确实安装了它(不仅仅是客户端,服务器也是)。
  2. 确保它正在运行。
  3. 确保你知道它在哪里——通常在/var/lib/pgsql/data中——但是这可能在任何地方——/var/lib/pgsql/unrelated-instance。检查您的postgres 进程以查看这是哪个目录(-D 参数)。
  4. 修改上一步目录中的pg_hba.conf文件。我不知道为什么这个步骤不在 postgres 文档中。
  5. 例如,Jay 和 Craig Ringer 的回答中已经涵盖了具体配置。确保同时配置IPV4和 IPV6。
  6. 重新启动服务器。
  7. 测试您的配置是否有效。重复5-7,直到可以登录成功。
  8. 重要不要停止!现在您应该配置一个更安全的密码选项 - postgres 可能适合进行快速本地设置,但您希望使用更安全、可配置的身份验证机制,如 LDAP、Kerberos 或 GS​​SAPI。此外,您要确保已打开 SSL。
于 2017-03-18T09:39:30.290 回答