PgAdmin III - 如何在密码为空时连接到数据库?

Jér*_*nge 24 postgresql pgadmin

我已经在我的 PC (Win 7) 上安装了 PostgreSQL 9.1。我有一个使用login=sa和成功连接到它的小型 Java 应用程序password=""。连接有效。

但是,它被 PgAdmin III 本身拒绝。我得到:

Error connecting to the server: fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)

如何使用空密码从 PgAdmin III 连接到我的数据库?

编辑

这只是一个测试,而不是生产代码。

小智 33

我在别处找到了这个答案。

如果您的数据库在本地主机上,请尝试将连接中的主机字段留空,而不是使用“localhost”或“127.0.0.1?”。这告诉 PgAdmin 通过本地 unix 套接字而不是 TCP 连接。

  • 啊,原来如此。将主机留空。 (3认同)
  • 您不能将此字段留空,它是必需的。 (2认同)

Jac*_*las 10

我可以从 pgAdmin III 连接到我的 postgres 实例,而无需任何用户的密码,包括超级用户,例如postgres.

因为您从另一个客户端连接正常,所以如果它们在同一个工作站上,您没有理由不能从 pgAdmin 连接 - 除非客户端本身的某些防火墙规则允许一个程序而不是另一个程序。

如果问题特定于该客户端,您可能需要更改以下一项或多项:

  • pg_hba.conf
主机 sa 所有 192.168.0.nnn/32 信任
  • 配置文件
监听地址 = '*'
  • postgres 服务器上的防火墙,例如 iptables:
-A INPUT -s 192.168.0.nnn -m state --state NEW -j ACCEPT

我建议你不要做任何这些。该手册有充分的理由说明以下内容:

信任身份验证仅适用于 TCP/IP 连接,前提是您信任每台机器上的每个用户,这些用户被指定信任的 pg_hba.conf 行允许连接到服务器。除了来自 localhost (127.0.0.1) 的连接之外,对任何 TCP/IP 连接使用信任几乎是不合理的。

相反,请考虑:

  • 使用密码和 md5 标识
  • 通过 ssh 隧道传输端口 5432