Postgresql

如何使用 pgAdmin3 連接到 Ubuntu 上的遠端 PostgreSQL 數據庫?

  • March 1, 2017

我正在嘗試在 Ubuntu 機器上設置 PostgreSQL 數據庫。我希望能夠從遠端機器上使用 pgAdmin3 訪問它。我該如何設置?

我在 Ubuntu 上安裝了 PostgreSQL 數據庫,使用:

sudo apt-get install postgresql

在我/etc/postgresql/9.1/main/pg_hba.conf有我這一行:

host    all    all    all    password

所以它應該接受來自所有 IPv4 地址的連接,並且密碼應該以明文形式發送(這是出於開發原因)。

如果我執行此命令以查看正在執行的服務:

sudo netstat -tulpn

我可以看到這些行,這表明 PostgreSQL 正在接受預設埠上的連接:

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

當我嘗試從同一本地網路上的遠端電腦連接到此 PostgreSQL 伺服器時,我收到以下錯誤消息:

伺服器不聽

伺服器不接受連接:連接庫報告

無法連接到伺服器:連接被拒絕 伺服器是否在主機“10.0.1.7”上執行並接受埠 5432 上的 TCP/IP 連接?

我用postgres作使用者名,沒有密碼。但我也嘗試過使用postgres密碼。在本地伺服器上,我可以使用以下方式登錄:

sudo -u postgres psql postgres

如何使用 pgAdmin3 從遠端電腦連接到在 Ubuntu 上執行的 PostgreSQL 數據庫?

您的 netstat 報告中的行顯示數據庫僅在 localhost:5432 (127.0.0.1) 上偵聽傳入的 tcp 連接。

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

因此,無論您在 pg_hba.conf 中指定了什麼權限,它都只能接受本地 tcp 連接。pg_hba.conf 僅指定允許的連接,但沒有指定您的服務將偵聽的介面。

伺服器偵聽的地址由postgresql.conf 中的 listen_addresses GUC指定。如果您希望伺服器偵聽遠端連接,您應該指定您希望它偵聽或*偵聽主機上所有可用介面的 ip。

要讓您的 postgresql 伺服器偵聽主機上的所有介面,您應該在 postgresql.conf 中有以下行:

listen_addresses = '*'

引用自:https://dba.stackexchange.com/questions/18717