解決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。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- golang基於websocket通信tcp keepalive研究記錄
- PostgreSQL 主備數據宕機恢復測試方案
- 詳解PHP Swoole長連接常見問題
- PostgreSQL忘記postgres賬號密碼的解決方法
- PostgreSQL報錯 解決操作符不存在的問題