首页 > 解决方案 > psql 和 pgadmin4 连接失败

问题描述

我使用 postgres 11,我只是尝试将我的一个用户连接到 psql 和 pgadmin4

我的 pg_hba.conf 文件

# "local" is for Unix domain socket connections only
local   all             all                                 peer
host    sito        lcm_admin       127.0.0.1/32            md5
host    sito        sito_lcm        127.0.0.1/32            md5

我的 postgres 用户有密码。

我尝试了我的 posgres 用户,sito_lcm 和 lcm_admin 来连接到 pgAdmin4,总是得到

Invalid username or password

我知道有好处,因为它是我用来在 java 程序中连接到 posgres db 的那个

对于 psql 我试过

su - postgres 输入了我的密码

认证失败

尝试与我的一位数据库用户

psql -U lcm_admin sito
psql: FATAL:  Peer authentication failed for user "lcm_admin"

编辑

使用 Daniel Vérité 提示,我可以连接到 psql 但不能连接到 pgAdmin4

在此处输入图像描述

我第一次看到这个屏幕,我的最后一次连接是几个月前,不知道一些更新是否造成了这个问题

标签: postgresqlpsqlpgadmin-4

解决方案


由于 pg_hba.conf 中的这条规则

host    sito        lcm_admin       127.0.0.1/32            md5

您可能想以这种方式调用 psql :

psql -U lcm_admin -h 127.0.0.1 sito

然后它会要求输入密码,而不是因为“对等身份验证失败”而失败。

请注意,pg_hba.conf 中的规则按照文件中的顺序(从上到下)进行测试,并在第一个匹配的规则处停止。


关于与 pgAdmin4 的连接:

https://www.pgadmin.org/docs/pgadmin4/latest/getting_started.html中所述,作为应用程序访问 pgAdmin4 本身还有一个额外的步骤。

在服务器部署中,安装时会询问电子邮件地址和密码。如果您不记得密码但提供了有效的电子邮件地址,“忘记密码”链接可能对您有用。否则,我想从头开始重新安装 pgAdmin4 也可能有效。

就个人而言,我将 pgAdmin4 作为没有持久卷的 docker 容器启动:

$ docker run -p8080:80  -e PGADMIN_DEFAULT_EMAIL=foo@example.com -e PGADMIN_DEFAULT_PASSWORD=bar dpage/pgadmin4

然后我连接到 http://localhost:8080 并且在第一页输入的电子邮件/密码是在命令行中传递的那些环境变量。


推荐阅读