psql 和 pgadmin4 连接失败

Connection failed with psql and 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 数据库的那个

我试过 psql

su - postgres typed my password

认证失败

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

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

编辑

根据 Daniel Vérité 的提示,我可以连接到 psql 但不能连接到 pgAdmin4

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

因为 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 本身还有一个额外的步骤。

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

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

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

然后我连接到http://localhost:8080,第一页进入的email/password就是命令行传递的那些环境变量