如何使用pgAdmin3连接到Ubuntu上的远程PostgreSQL数据库?


22

我正在尝试在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数据库?

Answers:


25

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 = '*'

但我已经allpg_hba.conf文件中指定了...,因此它应该接受来自所有IP地址的连接。
乔纳斯(Jonas)2012年

也许我可以说得更清楚些。pg_hba没有指定数据库监听什么,仅指定允许什么协议/ db / user / remote-addr连接。
dbenhur 2012年

好的,那我该如何解决呢?你有什么建议吗?
乔纳斯(Jonas)2012年

1
您可以通过listen_addresses = '*'在postgresql.conf中放置一行并重新启动服务器来修复它。
dbenhur 2012年

谢谢,这解决了这个问题。现在我只是遇到了默认密码的问题:(
乔纳斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.