PostgreSQL遠端連接調試

PostgreSQL遠端連接調試

我在從線上來源連接到 PostgreSQL 資料庫時遇到問題。

PostgreSQL 似乎設定得很好,它在預設連接埠 5432 上運行,並且 postgresql.conf 有以下行

listen_addresses = '*'

pg_hba.conf 有以下內容

host    dbname    usname    all    md5

我可以在 pgadmin 中使用以下憑證從另一台電腦連接到 PostgreSQL 資料庫

Name              local
Host              192.xx.xx.xx
Port              5432
Maintenance DB    dbname
Username          usname
Password          psword

使用這些我可以完美連接它似乎工作正常。

然後我在ADSL路由器上轉送連接埠192.xx.xx.xx:5432,並使用公用IP位址197.xx.xx.xx(對網際網路IP可見)進行檢查 http://www.canyouseeme.org/ 我可以看到連接埠轉送正常。

我已經禁用了 SELinux 並暫時禁用了防火牆。

但是,當我嘗試使用連接時

Name              online
Host              197.xx.xx.xx
Port              5432
Maintenance DB    dbname
Username          usname
Password          psword

我收到伺服器不監聽錯誤訊息

could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "197.xx.xx.xx" and accepting TCP/IP connections on port 5432?

為什麼是這樣?我是否需要添加額外的步驟來使其透過連接埠轉送接受連線?

答案1

allhost在 中某行的 CIDR 欄位中無效pg_hba.conf

來自預設檔案本身的註釋pg_hba.conf

# 主機資料庫使用者 CIDR 位址方法 [選項]

CIDR-ADDRESS 指定記錄符合的主機集。它由 IP 位址和 CIDR 遮罩組成,CIDR 遮罩是一個整數(介於 0 和 32 (IPv4) 或 128 (IPv6) 之間),指定遮罩中有效位數。或者,您可以在單獨的列中寫入 IP 位址和網路遮罩來指定主機集。

試試這個:

host    dbname    usname      197.xx.xx.xx/32  md5

這將允許僅從遠端主機 197.xx.xx.xx 從 usname 連接到 dbname

如果要允許整個 197.xx.xx /24 子網,請使用:

host    dbname    usname      197.xx.xx.0/24  md5

相關內容