pgadmin3:致命:用户"postgres"的身份验证失败

DSb*_*ard 6 authentication postgresql pgadmin

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

Name: postgres
Host: localhost
Username: postgres
Password: <password which works for psql>
Service: empty or postgres
Run Code Online (Sandbox Code Playgroud)

但它显示错误:

FATAL: Ident authentification failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

我重新启动了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
Run Code Online (Sandbox Code Playgroud)

编辑:工具 - >服务器配置 - > pg_hba.conf显示为灰色.

Cra*_*ger 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
Run Code Online (Sandbox Code Playgroud)

我不确定为什么您将 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,它仍然可以工作,因为它从来没有被要求实际提供密码,它只是被自动信任。