2

我最近刚刚通过 SSH 在我们的服务器上安装了 PostgreSQL。安装成功,直到我尝试在我的 Windows 机器上使用 pgAdmin 连接到它。我收到了这种错误:

无法连接到服务器:连接被拒绝 (0x0000274D/10061) 服务器是否在主机“xxx.xxx.xxx.xxx”上运行并接受端口 5432 上的 TCP/IP 连接?

xxx.xxx.xxx.xxx = 我的服务器的公共 IP。

文档建议可以通过设置/etc/postgresql/9.1/main/postgresql.conflisten_addresses = '*'中的值来解决此问题。我这样做了,但它仍然不允许我这样做。

出现了额外的错误

致命:主机“xxx.xx.xxx.xxx”、用户“postgres”、数据库“postgres”没有 pg_hba.conf 条目,致命的 SSL:主机“xxx.xx.xxx.xxx”没有 pg_hba.conf 条目,用户“postgres”,数据库“postgres”,SSL 关闭

xxx.xx.xxx.xxx = 我的 IP 地址。

我好像错过了什么?

4

3 回答 3

5

可能阻止 postgres 连接的事情:

  1. listen_address配置错误postgresql.conf
  2. selinux (?)
  3. iptables
  4. pg_hba.conf(虽然这应该会导致不同的错误,而不是服务器不听)

如果您 ssh in 并运行,您可以在本地连接到服务器psql吗?

在我们的内部开发服务器上,我只是关闭了 selinux 和 iptables。从安全的角度来看,这是一个坏主意,但它可以作为一个临时步骤来帮助您缩小问题所在的范围。

于 2012-09-05T17:55:41.697 回答
2

您可能需要更改多个配置文件。在您的情况下,您可能还需要编辑pg_hba.conf。在该文件中搜索“非本地连接”。

我喜欢将配置文件置于版本控制之下。这样更容易从错误中恢复过来。

进行这些更改后,您可能需要重新启动 PostgreSQL 服务器。

于 2012-09-05T17:56:49.957 回答
1
  • 更改服务器上的 listen_addresses 设置后,确保重新启动 PostgreSQL 服务器(发送 SIGHUP 到 postmaster 进程,使用 kill -HUP 等)。
  • 确保 postgresql.conf 端口设置为 5432
  • 确保如果服务器上正在运行防火墙,则端口 5432 对来自您正在使用的窗口(客户端)机器的连接打开
  • 检查 pg_hba.conf 以确保您的客户端机器的子网被授予访问权限
  • 尝试在本地使用 psql
于 2012-09-05T18:01:04.977 回答