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

Jon*_*nas 22 postgresql ubuntu pgadmin

我正在尝试在 Ubuntu 机器上设置 PostgreSQL 数据库。我希望能够从远程机器使用 pgAdmin3 访问它。我该如何设置?

我已经使用以下方法在 Ubuntu 上安装了 PostgreSQL 数据库:

sudo apt-get install postgresql
Run Code Online (Sandbox Code Playgroud)

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

host    all    all    all    password
Run Code Online (Sandbox Code Playgroud)

所以它应该接受来自所有 IPv4 地址的连接,密码应该以明文形式发送(这是出于开发原因)。

如果我运行此命令以查看正在运行的服务:

sudo netstat -tulpn
Run Code Online (Sandbox Code Playgroud)

我可以看到这些行,这表明 PostgreSQL 正在接受默认端口上的连接:

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres
Run Code Online (Sandbox Code Playgroud)

当我尝试从同一本地网络上的远程计算机连接到此 PostgreSQL 服务器时,我收到此错误消息:

服务器不听

服务器不接受连接:连接库报告

无法连接到服务器:连接被拒绝 服务器是否在主机“10.0.1.7”上运行并接受端口 5432 上的 TCP/IP 连接?

我用作用postgres户名,没有密码。但我也试过用postgres作为密码。在本地服务器上,我可以使用以下方法登录:

sudo -u postgres psql postgres
Run Code Online (Sandbox Code Playgroud)

如何使用 pgAdmin3 从远程机器连接到在 Ubuntu 上运行的 PostgreSQL 数据库?

dbe*_*hur 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
Run Code Online (Sandbox Code Playgroud)

因此,无论您在 pg_hba.conf 中指定了什么权限,它都只能接受本地 tcp 连接。pg_hba.conf 仅指定允许的连接,但未指定您的服务将侦听哪些接口。

服务器侦听的地址由postgresql.conf 中listen_addresses GUC指定。如果您希望服务器侦听远程连接,您应该指定您希望它侦听或*侦听主机上所有可用接口的 IP。

要让您的 postgresql 服务器侦听主机上的所有接口,您应该在 postgresql.conf 中有以下行:

listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)