pgsql 可以连接,但 pgadmin 无法连接

pgsql 可以连接,但 pgadmin 无法连接

我们只希望 1 个角色拥有 1 个数据库、Domain-unix Socket、无密码

postgres@luciol-essai:~$ more /etc/postgresql/8.4/main/pg_hba.conf | grep jppstphp
local   essais_php  jppstphp                       trust
postgres@luciol-essai:~$ 

psql 成功:

envol@luciol-essai:~$ psql -U jppstphp essais_php
psql (8.4.15)
essais_php=> 

pgadmin3 失败:

这就是错误。

Error connecting to the server: FATAL:  authentification Ident ?chou?e pour l'utilisateur << jppstphp >>

答案1

看起来 PgAdmin-III 被告知要连接到localhost127.0.0.1,因此它使用 TCP/IP,而 psql 没有被赋予主机规范,因此它使用 UNIX 套接字(local)。

将 pgadmin3 中的主机名字段留空,或添加另一个pg_hba.conf条目host essais_php jppstphp 127.0.0.1/32 trust

答案2

您应该检查整个pg_hba.conf文件,指令的顺序很重要。我猜您保留了其中的默认行:

local   all         all                               ident

如果此行出现在您指定的关于 行之前jppstphp,postgresql 服务器将首先尝试根据您的 UNIX 用户名(似乎是 )来识别您envol。这将失败,因为您尝试以 postgres 用户/角色 的身份进行连接jppstphp

md5如果我的假设是正确的,删除​​上面的行(并且可能还有带有密码验证的类似条目)或将您的jppstphp行放在它前面应该允许您通过本地套接字进行连接。

要通过本地套接字进行连接,只需像您一样将主机字段留空即可。

答案3

通过命令行连接 psql 时遇到同样的问题,而 pgAdmin 无法通过 AWS 连接 RDS。我确实将 RDS 设置为可公开访问。我确保我的 ACL 和安全组完全开放,但问题仍然存在,因此我执行以下操作: sudo find . -name *.conf 然后sudo nano ./data/pg_hba.conf 将其添加到 pg_hba.conf 文件中的指令顶部host all all 0.0.0.0/0 md5 ,然后 pgAdmin 会自动让我登录。

顺便提一下,我的 RDS 位于我的默认 VPC 中。我的非默认 VPC 中有一个相同的 RDS 实例,其安全组、ACL 和安全组设置与我的默认 VPC 相同,但我无法让它工作。不知道为什么,但那是另一天的事了。

相关内容