2017-01-02 153 views
0

也許這個問題重複,但我沒有得到任何解決方案我使用的是centos 7和Postgres 9.3。 雖然連接PostgreSQL服務器它通過錯誤,Postgres服務器拒絕連接

錯誤

拒絕連接在服務器上的主機 「localhost」 的運行(:: 1) 和端口接受TCP/IP連接5432

即使我設置pg_hba.config文件,但我仍得到相同的錯誤 我試圖刪除postmaster.pid,但我得到一個錯誤no such file and no pid exist 請告訴我解決

回答

0

我有同樣的問題,我解決了這個與解釋:

「野刺在黑暗中:你的機器上一個IPv6解析器其中localhost默認的IPv6地址::1,但在的listen_addresses postgresql.conf設置爲127.0.0.10.0.0.0而不是*或者您正在使用一個較舊的PostgreSQL,該庫使用的C庫不具有透明的IPv6支持。

變化listen_addresseslocalhost並確保localhost解析爲兩個IPv4IPv6地址,或將其設置爲::1127.0.0.1明確指定兩個IPv4IPv6。或者只需將其設置爲*即可在所有接口上偵聽。另外,如果你不關心IPv6,連接到127.0.0.1,而不是localhost「。

參考鏈接here

我覺得thispost也可以幫助你。

+0

在我的機器上listen_addresses設置爲*已經 –

+0

請檢查一下你的database.yml是否與你的端口相同,默認情況下在我的postgresql-9.2上用5433代替5432,別忘了重啓postgres服務器,好運氣 –

+0

如果不工作,請參閱我的編輯,這個錯誤可以用變量形式解決,取決於可以是什麼 –

0

請檢查是否防火牆允許連接
如果在Ubuntu上有命令sudo ufw status
結果會是這樣的

To       Action  From 
--       ------  ---- 
22       LIMIT  Anywhere     
443      ALLOW  Anywhere     
80       ALLOW  Anywhere     
8000      ALLOW  Anywhere     
Nginx Full     ALLOW  Anywhere     

您可以看到端口5432不被允許。
現在運行命令sudo ufw allow 5432/tcp和 檢查UFW狀態
sudo ufw status現在將返回

22       LIMIT  Anywhere     
443      ALLOW  Anywhere     
80       ALLOW  Anywhere     
8000      ALLOW  Anywhere     
Nginx Full     ALLOW  Anywhere     
5432/tcp     ALLOW  Anywhere  

如果這不起作用,你可能可能還沒有允許的IP聽Postgres的。
更改listen_address = 'localhost'listen_address = '*'postgres.conf文件。