54

我在本地服务器(Ubuntu)上安装了 PostgreSQL,IP 为 192.168.1.10。现在,我正在尝试使用 pgAdmin 从 IP 为 192.168.1.11 的客户端计算机 (Ubuntu) 访问数据库。

我知道我必须在 postgresql.conf 和 pg_hba.conf 中进行更改以允许客户端连接。你能指导我吗?

4

7 回答 7

116

通过 pgAdmin3 远程连接到 PostgreSQL 服务器实际上是一个 3 步过程。

注意:我使用 Ubuntu 11.04 和 PostgreSQL 8.4。

  1. 您必须让 PostgreSQL 侦听远程传入 TCP 连接,因为默认设置只允许侦听环回接口上的连接。为了能够远程访问服务器,您必须将以下行添加到文件中/etc/postgresql/8.4/main/postgresql.conf:

    听地址 = '*'

  2. 默认情况下,PostgreSQL 拒绝从任何远程地址接收的所有连接,您必须通过将此行添加到/etc/postgresql/8.4/main/pg_hba.conf:

    托管所有所有 0.0.0.0/0 md5

    这是一个访问控制规则,如果他可以提供有效的密码(md5 关键字),任何人都可以从任何地址登录。您可以使用所需的网络/掩码而不是 0.0.0.0/0 。

  3. 将这些修改应用于配置文件后,您需要重新启动 PostgreSQL 服务器。现在可以使用用户名和密码远程登录到您的服务器。

于 2011-05-17T11:50:45.817 回答
8

如果您使用的是 PostgreSQL 8 或更高版本,您可能需要修改listen_addresses./etc/postgresql/8.4/main/postgresql.conf

尝试添加该行:

listen_addresses = *

这将告诉 PostgreSQL 监听所有网络接口上的连接。

如果未明确设置,则此设置默认为localhost这意味着它将只接受来自同一台机器的连接。

于 2010-10-05T19:13:36.010 回答
2

在linux终端试试这个:

  • sudo service postgresql start: 启动服务器
  • sudo service postgresql stop: 停止你的服务器
  • sudo service postgresql status: 检查服务器状态
于 2019-09-17T17:33:19.557 回答
1

我不必更改我的 prostgresql.conf 文件,但是,我确实必须根据我的 psql 通过命令行连接并且 pgAdmin 没有在 RDS 上与 AWS 连接来执行以下操作。

我确实将我的 RDS 设置为可公开访问。我确保我的 ACL 和安全组是完全开放的并且仍然存在问题,所以我做了以下操作: sudo find . -name *.conf 然后sudo nano ./data/pg_hba.conf 添加到 pg_hba.conf 文件中的指令顶部,host all all 0.0.0.0/0 md5 pgAdmin 自动让我登录。

host all all md5这也适用于没有任何 IP 地址的 pg_hba.conf 文件 ,这也适用于我的 IP 地址host all all <myip>/32 md5

附带说明一下,我的 RDS 在我的默认 VPC 中。我的非默认 VPC 中有一个相同的 RDS 实例,其安全组、ACL 和安全组设置与我的默认 VPC 相同,但我无法让它工作。不知道为什么,但那是另一天。

于 2016-10-06T19:23:34.440 回答
1

通过 SSH 隧道连接到 PostgreSQL

如果您不想为任何流量打开端口 5432,或者您不想将 PostgreSQL 配置为侦听任何远程流量,则可以使用 SSH 隧道建立与 PostgreSQL 实例的远程连接。就是这样:

  1. 打开腻子。如果您已经设置了一个会话来连接到 EC2 实例,请加载它,但暂时不要连接到它。如果您没有这样的会话,请参阅此帖子。
  2. 转到连接 > SSH > 隧道
  3. 在源端口字段中输入 5433。
  4. 在目标字段中输入 127.0.0.1:5432。
  5. 单击“添加”按钮。
  6. 返回会话,保存会话,然后单击“打开”进行连接。
  7. 这将打开一个终端窗口。连接后,您可以不理会它。
  8. 打开 pgAdmin 并添加一个连接。
  9. 在主机字段中输入 localhost,在端口字段中输入 5433。指定连接的名称以及用户名和密码。完成后单击确定。
于 2020-05-29T05:34:37.990 回答
0

对于红帽 Linux

sudo vi /var/lib/pgsql9/data/postgresql.conf 

pgsql9 是安装的 postgres 版本的文件夹,其他的可能不同

从 listen_addresses = 'localhost' 更改了 listen_addresses = '*' 然后

sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql start
于 2016-12-06T21:42:03.813 回答
0

检查你的防火墙。当您禁用它时,您可以连接。如果您想要/不能禁用防火墙,请为您的远程连接添加规则。

于 2019-04-24T14:02:13.520 回答