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

use*_*806 7 postgresql psql

我想远程连接到Postgres实例.我知道我们可以使用传递主机名的psql命令来完成此操作

我尝试了以下方法:

psql -U postgres -p 5432 -h hostname
Run Code Online (Sandbox Code Playgroud)

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

我在文件中添加了以下行

host all all source_ip/32 trust
Run Code Online (Sandbox Code Playgroud)

我使用重新启动集群

pg_ctlcluster 9.2 mycluster stop
pg_ctlcluster 9.2 mycluster start
Run Code Online (Sandbox Code Playgroud)

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

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

我在这做错了什么?

小智 40

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

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

  • 我使用 ElephantSql 并执行以下操作:`psql -h &lt;surus.db.elephantsql.com&gt; -U &lt;user&gt;`。免费版本中的主机可以更改,然后我必须添加密码,该密码在 URL 字符串中与用户用冒号分隔。 (2认同)

dev*_*min 18

psql -h <IP_Address> -p <port_no> -d <database_name> -U <DB_username> -W
Run Code Online (Sandbox Code Playgroud)

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

psql -h 192.168.1.50 -p 5432 -d testdb -U testuser -W
Run Code Online (Sandbox Code Playgroud)


use*_*806 14

我想到了。

必须设置listen_addresses='*'postgresql.conf允许从任何IP传入的连接/全IP

  • 这是安全问题还是正常做法? (3认同)
  • @Ben一般来说,应该只允许特定的IP地址连接到psql实例。 (3认同)

aar*_*ona 9

如果你想使用postgresurl 你可以这样做:

psql postgres://user:password@ip_add_or_domain:port/db_name
Run Code Online (Sandbox Code Playgroud)