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


21

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

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

Error connecting to the server: fe_sendauth: no password supplied

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

编辑

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


我不确定,但是很容易想到PgAdmin不支持该功能。
Peter Eisentraut 2011年

您的Java应用程序与pgAdmin是否在同一客户端上?
杰克·道格拉斯

Answers:


10

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

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

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

  • pg_hba.conf
托管所有192.168.0.nnn / 32信任
  • postgresql.conf
listen_addresses ='*'
  • 您的postgres服务器上的防火墙,例如iptables:
-A输入-s 192.168.0.nnn -m状态-状态新-j接受

我建议您不要执行任何此操作。该手册充分说明了以下内容:

如果您通过指定信任的pg_hba.conf行允许在允许连接到服务器的每台计算机上的每个用户信任,则信任认证仅适用于TCP / IP连接。对于来自本地主机(127.0.0.1)的TCP / IP连接以外的任何TCP / IP连接,都很少使用信任。

相反,请考虑:

  • 使用密码和md5标识
  • 在ssh上建立隧道端口5432

31

我在其他地方找到了这个答案。

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


让我们补充一点,最初的问题是关于Windows系统的。
dezso 2012年

3
嗯,就是这样。将主机保留为空白。
2015年

您不能将此字段留空,这是必需的。
阿斯兰2015年

看起来只有在pg中有一个角色被命名为系统用户名(在Linux上)时,将host字段留为空白才有效。否则我猜需要用户地图。
2015年

完善!随着全新安装PostgreSQL和pgAdmin项目,改pg_hba.conf说了trust,而不是peer在这条线- local all postgres trust,和离开主机和密码字段空白的pgAdmin得到的一切工作!我希望pgadmin可以添加一个复选框以切换到套接字,而不是很难找到的UI。
阿努帕姆·in那
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.