【问题标题】:PostgreSQL: Remotely connecting to Postgres instance using psql commandPostgreSQL:使用 psql 命令远程连接到 Postgres 实例
【发布时间】:2015-12-25 18:39:47
【问题描述】:

我想远程连接到 Postgres 实例。我知道我们可以使用传递主机名的 psql 命令来做到这一点

我尝试了以下方法:

psql -U postgres -p 5432 -h hostname

我修改了目标机器上的/etc/postgresql/9.3/main/pg_hba.conf文件,默认允许远程连接

我在文件中添加了以下行

host all all source_ip/32 trust

我使用

重新启动了集群
pg_ctlcluster 9.2 mycluster stop
pg_ctlcluster 9.2 mycluster start

但是,当我尝试从 source_ip 连接时,我仍然收到错误

服务器是否在主机 "" 上运行并接受端口 5432 上的 TCP/IP 连接?

我在这里做错了什么?

【问题讨论】:

  • postgres 服务器运行在什么操作系统上?
  • 检查防火墙设置,以便端口 5432 开放以接受连接
  • 假设您的客户端机器有ssh,您也可以尝试通过设置 ssh 隧道:ssh -L 5432:localhost:5432 your_server_ip 并以与连接到 localhost db 相同的方式连接到远程 postgres。这可以帮助调试。
  • 默认情况下,postgresql 只侦听 localhost(许多发行版保留此默认值不变)将 listen_addresses 的值调整为 '*' 以使 postgresql 侦听您机器上的所有地址。

标签: postgresql psql


【解决方案1】:

请注意,pg_hba.conf 中的“ident”需要在客户端上运行“ide​​nt server”。

【讨论】:

    【解决方案2】:

    下面是明智的

    1. 打开端口 - 根据您的要求,确保 PSQL 端口对所有远程连接或来自特定 IP 集的连接都是开放的。 PSQL 一般运行在 5432 端口,并且是可配置的,因此需要相应地暴露相关端口。
    2. 更新远程服务器 PSQL 配置 - 在 postgresql.conf 文件中设置 listen_addresses = '*',一般路径为 /etc/postgresql/psql_version/main/postgresql.conf
    3. 远程连接 - psql -U <db_username> -h <IP_address> - 如果 psql 在远程服务器上的 5432 以外的端口上运行,请通过添加 -p <port_number> 指定端口

    下面加一点- 如果 IP 已映射到域名,您可以通过将 <IP_address> 替换为 <host_name> 来连接。为此,请在pg_hba.conf 文件中添加新的连接规则

    注意 - 上述所有解释都可能导致安全问题 - 最佳做法始终是关闭您的 psql 端口,或者只允许 IP 列表通过该端口进行连接。

    【讨论】:

      【解决方案3】:
      psql -h <IP_Address> -p <port_no> -d <database_name> -U <DB_username> -W
      

      -W 选项将提示输入密码。例如:

      psql -h 192.168.1.50 -p 5432 -d testdb -U testuser -W
      

      【讨论】:

        【解决方案4】:

        我使用以下选项解决了这个问题...

        1. 将您的数据库主机从您的网络团队中列入白名单,以确保您可以访问远程主机
        2. 安装 postgreSQL 版本 4 或更高版本
        3. 运行以下命令:
        psql -h <REMOTE HOST> -p <REMOTE PORT> -U <DB_USER> <DB_NAME>
        

        【讨论】:

          【解决方案5】:

          我想通了。

          必须在postgresql.conf 中设置listen_addresses='*' 以允许来自任何IP/所有IP 的传入连接

          【讨论】:

          • 这是安全问题还是被视为正常做法?
          • @Ben 一般来说,应该只允许特定的IP地址连接到psql实例。
          猜你喜欢
          • 1970-01-01
          • 2020-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-20
          • 2012-03-16
          • 2015-07-03
          • 2019-10-28
          相关资源
          最近更新 更多