2012-09-05 64 views
2

我只是最近通過SSH在我們的服務器上安裝PostgreSQL。軟件的安裝很順利,直到我試圖時間來連接它使用pgAdmin的在我的Windows machine.I收到這樣那樣的錯誤:postgresql服務器不聽

could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "xxx.xxx.xxx.xxx" and accepting TCP/IP connections on port 5432?

xxx.xxx.xxx.xxx =我的服務器的公網IP。

該文檔建議這可以通過在/etc/postgresql/9.1/main/postgresql.conf設定listen_addresses = '*'值是固定的。我做到了,但仍然不讓我。

其他錯誤想出了

FATAL: no pg_hba.conf entry for host "xxx.xx.xxx.xxx", user "postgres", database "postgres", SSL on FATAL: no pg_hba.conf entry for host "xxx.xx.xxx.xxx", user "postgres", database "postgres", SSL off

xxx.xx.xxx.xxx =我的IP地址。

什麼似乎是我失蹤?

回答

5

東西可以阻止一個Postgres連接:(?)

  1. 配置錯誤listen_addresspostgresql.conf
  2. SELinux的
  3. iptables的
  4. pg_hba.conf(雖然這應該會導致不同的錯誤,而不是服務器沒有按」 t聽)

你可以連接到se rver本地,如果你ssh並運行psql

在我們的內部開發服務器上,我只關閉了selinux和iptables。從安全角度來看,這是一個糟糕的主意,但它可能只是幫助您縮小問題範圍的臨時步驟。

+0

PSQL通過SSH遠程定接入

  • 嘗試,我可以管理下的Postgres用戶做'psql'。如果我使用安裝在Windows機器上的pgAdmin,我不僅可以訪問它。 –

  • +0

    我現在可以通過pgAdmin連接到postgres,但是我硬編碼了我的IP地址'host all all 122.55.37.1XX/32 md5'.How can I make it like like a wildcard that fit that IP address category? –

    +1

    @LeandroGarcia:使用IP地址,您需要考慮「位掩碼」,而不是「通配符」。這取決於您想要接受連接的IP地址數量以及最後兩位數字是什麼。例如,122.55.37.100/29將覆蓋122.55.37.97至122.55.37.102的範圍; 122.55.37.130/29將覆蓋122.55.37.129至122.55.37.134; 122.55.37.166/27將覆蓋122.55.37.161至122.55.37.190。 (我認爲,谷歌的「在線子網計算器」,或者沿着這些線尋求幫助的位掩碼。) –

    2

    您可能需要更改多個配置文件。就你而言,你可能也需要編輯pg_hba.conf。搜索該文件以獲取「非本地連接」。

    我喜歡在版本控制下保存配置文件。這樣更容易從錯誤中恢復過來。

    您可能需要在進行這些更改後重新啓動PostgreSQL服務器。

    +0

    但是所有與本地,本地所有postgres peer,本地all all peer,host都相關的所有127.0。 0.1/32 md5','host all all :: 1/128 md5' –

    +0

    @Leandro Garcia:如果當前只允許本地unix套接字和127.0.0.1或:: 1/128(即localhost),那可能是問題。您將需要添加一條線與您的客戶端機器使用的子網。即192.168.0.0/16等 –

    +0

    我很困惑,我的IPv4是192.168.0.100,那麼默認網關是192.168.0.1。我如何添加這個? –

    1
    • 更改服務器上的listen_addresses設置後,請確保重新啓動PostgreSQL服務器(發送SIGHUP到postmaster進程,使用kill -HUP等)。
    • 確保postgresql.conf裏端口設置爲5432
    • 確保如果防火牆運行在服務器上,該端口5432是開放的從窗口(客戶端)的機器來連接使用的是
    • 檢查pg_hba.conf文件,以確保您的客戶機的子網採用當地
    +0

    @Catcall @Joshua Berry - 我設法做到了這一點,但是我硬編碼了我的IP地址:'host all all 122.55.37.1XX/32 md5'我怎麼能使它像通配符那樣適合IP地址類別? –