【问题标题】:Unable to connect PostgreSQL to remote database using pgAdmin无法使用 pgAdmin 将 PostgreSQL 连接到远程数据库
【发布时间】:2009-08-17 09:45:50
【问题描述】:

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

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

【问题讨论】:

  • 您是否收到错误消息?如果是这样,什么错误?
  • 这不是一个真正的编程问题。不过,在 data/pg_hba.conf 中添加一行“host all all 192.168.1.0/24 md5”
  • 您遇到的错误是什么?您正在执行什么命令从不同的服务器连接到数据库?你想在 postgresql.conf 和 pg_hba.conf 中改变什么?
  • 在 windows 8.1 下使用 10.1 + pgAdmin 4,我卸载了所有内容(c:\program files\postgresql\ 和 c:\program files (x86)\postgresql\ 中的子目录包含卸载程序)并删除了两者目录。重新凝视。然后单独安装 pgAdmin 4。有效!在我的情况下没有其他建议有效。但这不切实际,所以我不能把这个作为答案。

标签: postgresql pgadmin


【解决方案1】:

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

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

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

    listen_addresses = '*'

  2. PostgreSQL 默认拒绝它从任何远程地址接收的所有连接,您必须通过将此行添加到 /etc/postgresql/8.4/main/pg_hba.conf: 来放宽这些规则

    托管所有 0.0.0.0/0 md5

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

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

【讨论】:

  • 在 ubuntu sudo /etc/init.d/postgresql stopsudo /etc/init.d/postgresql start 中启动 PostgresSQL 服务器。我用谷歌搜索了这个。所以这里添加给不知道重启服务命令的人
  • 在 RedHat /var/lib/pgsql/9.4/data/pg_hba.conf
  • 一个小更新。以上0.0.0.0/0 md5 仅适用于 IPv4。为了启用对 IPv6 的访问,还要添加以下行:host all all ::0/0 md5
  • 现在,您可能已经找到了,但仍以防万一:sudo /etc/init.d/postgresql status 查看您启动或停止的服务的状态。
  • 在 Windows 上不要忘记防火墙,禁用它或为 postgres 添加规则
【解决方案2】:

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

尝试添加该行:

listen_addresses = *

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

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

【讨论】:

    【解决方案3】:

    在 linux 终端试试这个:

    • sudo service postgresql start : 启动服务器
    • sudo service postgresql stop : 停止你的服务器
    • sudo service postgresql status : 检查服务器状态

    【讨论】:

      【解决方案4】:

      我不必更改我的 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 自动让我登录。

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

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

      【讨论】:

        【解决方案5】:

        通过 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。 指定连接的名称以及用户名和密码。 完成后点击确定。

        【讨论】:

          【解决方案6】:

          对于红帽 linux

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

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

          改变了 听地址 = '*' 从 听地址='本地主机' 然后

          sudo /etc/init.d/postgresql stop
          sudo /etc/init.d/postgresql start
          

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • 您能否详细说明要添加的规则?
            猜你喜欢
            • 2013-07-20
            • 2018-10-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-08
            • 1970-01-01
            相关资源
            最近更新 更多