Postgresql

設置 Postgres:無法遠端連接到 Postgres 伺服器

  • February 24, 2022

我在讓 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

這不是我想要的(我想使用 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"

看起來挺好的…

讓我們看看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

好吧…我認為…不是真正的系統管理員,我不能確切地說出這意味著什麼,但看起來 PID 30091(程序 postmaster)打開了埠 5432。

讓我們看看埠 5432 上是否有任何東西在監聽

$ telnet localhost 5432
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

好的,埠 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

好的,我可以從 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

我無法連接到埠 5432

我執行/usr/sbin/lokkit並驗證軟體防火牆已關閉。

無論如何,我都不是網路或系統管理員。我也不是 postgres 管理員。我很可能錯過了一些簡單、愚蠢的事情,但我不知道是什麼。

我很確定這些機器上的 5432 埠在網路上是開放的。我嘗試將 Postgres 埠切換到 8999,我確定它沒有被阻止,但我遇到了同樣的問題。

知道我做錯了什麼嗎?

在文本編輯器中打開 postgresql.conf 並查找listen_addresses關鍵字。將其設置為*

重啟 pgsql。

僅供參考……我做的一件非常愚蠢的事情是,當我去更改配置文件時,忘記刪除配置文件中“listen_addresses”行中的前導“ # ”。(是的……因此,這條線是

$$ still $$評論*!* 嗚嗚嗚。)

引用自:https://serverfault.com/questions/380398