PostgreSQL:使用 psql 命令远程连接到 Postgres 实例

PostgreSQL: Remotely connecting to Postgres instance using psql command

我想远程连接到 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 连接时,我仍然收到错误

Is the server running on host "" and accepting TCP/IP connections on port 5432?

我做错了什么?

我想通了。

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

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

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

下面的步骤

  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>
  4. 指定端口

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

中添加新的连接规则

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

请注意,pg_hba.conf 中的“ident”需要客户端上的 运行“ident 服务器”。