解決postgreSql遠程連接數據庫超時的問題

首先在cmd中ping 這個ip如果發現可以ping通就可以考慮是 遠程數據庫開啟瞭防火墻、或者數據庫設置該ip不能訪問。

防火墻問題:可以考慮直接關閉防火墻,或者設置防火墻開放5432端口

然後到postgresql安裝目錄下data中修改pg_hba.conf文件,配置用戶的訪問權限,拉到底部

host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 md5 #表示允許網段192.168.1.0上的所有主機使用所有合法的數據庫用戶名
#訪問數據庫,並提供加密的密碼驗證
host all all 0.0.0.0/0 md5 #表示允許所有主機使用所有合法的數據庫用戶名訪問數據庫,並提供加密的
#密碼驗證。數字24是子網掩碼,表示允許192.168.1.0–192.168.1.255的計算機訪問!

修改postgresql.conf文件

定位到#listen_addresses 一般都是默認為*,不是就改成*

然後重啟postgresql服務

補充:postgresql遠程連接中斷的解決

在阿裡雲安裝瞭postgresql以後,上班時間連接公司網絡,本地連接pg數據庫,隔幾分鐘就會自動斷開連接,很浪費開發效率,

比較鬱悶的是,下班時間連接傢裡的網絡就沒有問題,

研究瞭一段時間後,最終通過設置TCP的keepalive讓問題得到解決

[root@localhost ~]# sysctl -A | grep net.ipv4.tcp_keepalive
sysctl: reading key "net.ipv6.conf.all.stable_secret"
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200

- net.ipv4.tcp_keepalive_time – 在第一次keep alive請求發送後,不活動連接的時間

- net.ipv4.tcp_keepalive_probes – 在這個連接被認為是斷開之前,keep alive請求被重發的次數

- net.ipv4.tcp_keepalive_intvl – keep alive探測的時間間隔

默認的超時設置太長,如果外網網絡狀況不佳,可能會導致連接斷掉,

所以讓pg更頻繁地發出探測數據包來保持tcp連接:

[root@localhost ~]# sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_probes=3 net.ipv4.tcp_keepalive_intvl=10

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: