postgresql pgadmin3:致命:用户“postgres”的身份验证失败

uqjltbpv  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(4)|浏览(285)

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

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显示为灰色。

0md85ypi

0md85ypi1#

看起来PgAdmin-III可能默认通过IPv6连接,所以它使用的是ident线路,匹配本地主机的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套接字上的密码认证)确实更安全。
如果PgAdmin-III没有编辑pg_hba.conf的权限,您需要直接在文本编辑器中编辑它。您可以通过sudo以用户postgres的身份运行PgAdmin-III,但是只使用nano或类似的命令行文本编辑器来修改pg_hba.conf更安全(可能更容易)。
密码适用于psql,因为除非另有说明,否则psql将通过unix域套接字连接,并且您将其设置为trust。你可能会发现你可以给予psql * 任何 * 密码,它仍然可以工作,因为它从来没有被要求提供密码,它只是被自动信任。

bybem2ql

bybem2ql2#

是的,这种类型的错误是由每个新手用户pgadmin看到的。我找到了这个解决方案,它为我工作。

sudo -u postgres psql

这将询问您的系统密码,然后您将得到postgres提示。
然后在psql中键入下面的命令来更改密码。

\password

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

ha5z0ras

ha5z0ras3#

PostgreSQL帐户调试步骤(Linux特定):
1.确保您确实安装了它(不仅仅是客户端,服务器也是)。
1.确保它正在运行。
1.确保你知道它在哪里-通常在**/var/lib/pgsql/data**-但是它可以在任何地方- /var/lib/pgsql/unrelated-instance。检查您的postgres进程,查看这是哪个目录(-D参数)。
1.修改上一步中目录中的pg_hba.conf文件。我不知道为什么这个步骤不在postgres文档中。
1.具体配置已在例如Jay和克雷格Ringer的回答请确保配置**IPV4和IPV6。
1.重启服务器。
1.测试您的配置是否有效。重复5-7,直到您可以成功登录。
1.重要不要停!现在,您应该配置一个更安全的密码选项- postgres可能适合进行快速本地设置,但您希望使用更安全、可配置的身份验证机制,如LDAP、Kerberos或GSSAPI。此外,您需要确保已打开SSL。

zwghvu4y

zwghvu4y4#

更改默认用户的密码
ALTER USER postgres WITH PASSWORD 'new_password';

相关问题