2016-07-19 174 views
11

我在運行Ubuntu Server 14.04的服務器上安裝了PostgreSQL 9.3。無法連接到端口5432上的Postgresql

如果我ssh到通過終端服務器,我能夠用psql連接。但是,當我嘗試配置的pgAdmin III進行遠程連接,我得到:

Server doesn't listen The server doesn't accept connections: the connection library reports could not connect to server: Connection refused Is the server running on host "172.24.3.147" and accepting TCP/IP connections on port 5432?

當我在服務器上運行service postgresql status它給了我:

9.3/main (port 5432): online 

所以當然我想的東西這裏很重要。

編輯

當在服務器上運行netstat -na,我得到(相關部分,我猜):

Active Internet connections (servers and established) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  
tcp  0  0 127.0.0.1:5432   0.0.0.0:*    LISTEN  
tcp  0  0 172.24.3.147:22   172.24.3.240:61950  ESTABLISHED 
tcp  0  0 172.24.3.147:22   172.24.3.240:60214  ESTABLISHED 
+0

您沒有綁定到該ip。 pg正在傾聽其他內容,比如說可能只是127.0.0.1:5432 –

+0

你是什麼意思'綁定'?當我嘗試通過pgAdmin進行連接時,我正在使用服務器的端口(在ssh中使用)。 – Rodrigo

+0

你必須告訴pg要監聽連接的接口/ ip。如果它只綁定到127.0.0.1:5432,那麼在172.24.3.147:5432上的任何嘗試都不起作用,因爲沒有監聽到該ip:port combo –

回答

17

您必須編輯postgresql.conf文件,並用'listen_addresses'改變行。

這個文件,你可以在/etc/postgresql/9.3/main目錄中找到。

Ubuntu默認配置有隻允許本地主機(或127.0.0.1)接口,這足以用於使用中,當在同一臺計算機上的每個PostgreSQL客戶端工作,PostgreSQL服務器。如果你想從其他計算機連接PostgreSQL服務器,你必須改變這個配置行以這樣的方式

listen_addresses = '*' 

然後,你必須編輯pg_hba.conf文件了。在這個文件中,您已經設置了哪些計算機可以連接到此服務器以及您可以使用哪種認證方法。通常你會需要類似的一行:

host all   all   192.168.1.0/24  md5 

請,在這個文件中讀取評論...

編輯:

編輯postgresql.conf中後和pg_hba.conf文件必須重新啓動PostgreSQL服務器。

+0

工作就像一個魅力!謝謝。 – Rodrigo

+0

歡迎您:-) –

+0

謝謝,非常有幫助:) – simon

0

你可能需要或者打開的端口訪問它在你的局域網(或)或將網絡地址綁定到端口(使PostgreSQL在局域網上監聽而不是在本地主機上)

+0

對不起,作爲一名終身的PC開發人員,我並不完全熟悉這個端口的事情。現在我只需要在我們的局域網(基於代理的機構網絡)內訪問它。你留言的其餘部分對我來說無法理解。請參閱其他評論。 – Rodrigo

+1

Jan Marek的答案應該是你正在尋找的。 'tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN'這一行表明Postgre只監聽來自postgre運行的同一臺計算機的連接,而不是來自本地網絡。 – Av4t4r

+0

好的。但是你們怎麼知道所選擇的是關於Postgres的?因爲5432是它們的默認端口號? – Rodrigo

0

必須通過命令行連接和不pgAdmin的連接上與AWS RDS同樣的問題用psql。我確實將我的RDS設置爲公開訪問。我確信我的ACL和安全組是敞開的,仍然問題,所以,我做了以下內容: sudo find . -name *.conf 然後sudo nano ./data/pg_hba.conf 然後加入到指令的頂部pg_hba.conf文件host all all 0.0.0.0/0 md5 和pgAdmin的自動登錄我

這也先後在pg_hba.conf文件 host all all md5沒有任何IP地址,這也跟我的IP地址host all all <myip>/32 md5

補充說明的工作,我的RDS是我的默認VPC。在我的非默認VPC中,我有一個完全相同的RDS實例,具有與默認VPC相同的安全組,ACL和安全組設置,我無法使其工作。不知道爲什麼,但那是另一天。

0

還記得檢查防火牆設置。在檢查並仔細檢查我的pg_hba.confpostgres.conf文件後,我終於發現我的防火牆壓倒了所有內容,因此阻止了連接

相關問題