設置 Postgres:無法遠端連接到 Postgres 伺服器
我在讓 postgres 接受來自我的其他伺服器的連接時遇到問題。這是我的設置:
- APP06 (10.55.129.31):執行 Postgres 的伺服器
- APP05 (10.55.129.30):伺服器試圖連接到 Postgres
這是我
/var/lib/pgsql/data/pg_hba.conf
在app06上的文件:# 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看看能不能連接……
我已經嘗試
psql
從app05執行但沒有成功。我可以和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 $$評論*!* 嗚嗚嗚。)