设置 Postgres:无法远程连接到 Postgres 服务器

Dav*_* W. 6 postgresql

我在让 postgres 接受来自我的其他服务器的连接时遇到问题。这是我的设置:

  • APP06 (10.55.129.31):运行 Postgres 的服务器
  • APP05 (10.55.129.30):服务器尝试连接到 Postgres

这是我/var/lib/pgsql/data/pg_hba.confapp06上的文件:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         10.55.129.30/32       trust
host    all         all         10.55.129.31/32       trust
host    all         all         0.0.0.0/0             trust
# IPv6 local connections:
host    all         all         ::1/128               trust
Run Code Online (Sandbox Code Playgroud)

这不完全是我想要的(我想使用 LDAP),但它至少应该可以工作。我想将 10.55.129.30 连接到 10.44.129.31。第一host行应该是我所需要的。第三host行应该允许从任何地方连接。

现在,我们在app06上启动 Postgres

 $ /etc/init.d/postgres start
 $ /etc/init.d/postgres status

 pg_ctl: server is running (PID: 30091)
 /usr/bin/postgres "-D" "/var/lib/pgsql/data"
Run Code Online (Sandbox Code Playgroud)

看起来挺好的...

让我们看看 Netstat:

$ netstat -nlp | grep 5432
tcp        0      0 127.0.0.1:5432              0.0.0.0:*                   LISTEN      30091/postmaster    
unix  2      [ ACC ]     STREAM     LISTENING     16490154 30091/postmaster    /tmp/.s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)

好吧...我想...不是一个真正的系统管理员,我不能确切地说这意味着什么,但看起来 PID 30091(进程 postmaster)有端口 5432 打开。

让我们看看是否有任何东西在监听 5432 端口

$ telnet localhost 5432
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)

好的,端口 5432 已打开并接受连接。

现在,我们去APP05看看我们是否可以连接......

我已经尝试psqlapp05运行没有成功。我可以和app06 通话吗?

$ ping app06

PING app06 (10.55.129.31) 56(84) bytes of data.
64 bytes from app06 (10.55.129.31): icmp_seq=1 ttl=64 time=0.901 ms
64 bytes from app06 (10.55.129.31): icmp_seq=2 ttl=64 time=0.230 ms

--- app06 ping statistics ---
2 packets transmitted, 6 received, 0% packet loss, time 5001ms
Run Code Online (Sandbox Code Playgroud)

好的,我可以从 app05 与 app06 通话。让我们看看我是否可以连接到 Postgres 的端口:

$ telnet app06 5432
Trying 10.55.129.31...
telnet: connect to address 10.55.129.31: Connection refused
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)

我无法连接到端口 5432

我运行/usr/sbin/lokkit并验证软件防火墙已关闭。

无论如何,我不是网络或系统管理员。我也不是 postgres 管理员。我很可能错过了一些简单、愚蠢的事情,但我不知道是什么。

我很确定这些机器上的端口 5432 在网络上是开放的。我尝试将 Postgres 端口切换到 8999,我确定它没有被阻止,但我遇到了同样的问题。

知道我做错了什么吗?