如何使用 pgAdmin3 連接到 Ubuntu 上的遠端 PostgreSQL 數據庫?
我正在嘗試在 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 = '*'