Postgresql

無法連接到遠端 postgresql 數據庫

  • March 16, 2022

我正在嘗試連接到遠端 psql 數據庫。在我添加帶有客戶端 IP 地址的 pg_hba.conf 條目之前,我收到了一條錯誤消息:

xdev@xdevbox:~$ psql -U postgres testdb -h 10.1.1.47
psql: FATAL:  no pg_hba.conf entry for host "10.201.50.71", user "postgres", database "testdb", SSL off

我使用信任設置添加了客戶端的 IP。我還將伺服器上postgres.conf中的監聽地址更改為監聽“*”。然後我使用 /etc/init.d/postgresql restart 命令重新啟動了數據庫伺服器。

現在,當我嘗試連接時,我收到以下錯誤消息:

psql: could not connect to server: Connection refused
   Is the server running on host "10.1.1.47" and accepting
   TCP/IP connections on port 5432?

在 postgresql.conf 中,埠設置為 5432。我不確定還要檢查什麼。

謝謝

您必須配置以下兩個文件

pg_hba.conf

host all all 0.0.0.0/0 md5

postgresql.conf

listen_addresses='*'

您必須檢查埠 5432 是否打開:http ://www.yougetsignal.com/tools/open-ports/

如果不是,則將規則添加到您的iptables

iptables -A INPUT -s 0/0 -p tcp --dport 5432 -j ACCEPT

0/0:如果你想讓任何人訪問它。您可以將其更改為特定的 IP 地址或 IP 地址範圍。

我不同意使用

host all all 0.0.0.0/0 md5

如果您的數據庫暴露在網際網路上。在我的項目中,postrgres 在雲中,它是從後端使用的。我只需要直接連接到數據庫進行維護。我從公共 IP 連接到數據庫,比如 1.2.3.4。在這種情況下,正確的條目是:

host mybackend myuser 1.2.3.4/0 md5

請注意 IP 地址後的“/0”。如果沒有“/0”,您將收到“連接被拒絕錯誤”。

最好限制對數據庫的訪問,在白名單中指定數據庫名稱、數據庫使用者和 IP 地址。除非您處於開發環境中,否則切勿使用“ALL”。

再見!

引用自:https://dba.stackexchange.com/questions/100564