我想远程连接到 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 连接?
我在这里做错了什么?
ssh
,您还可以通过设置 ssh 隧道:ssh -L 5432:localhost:5432 your_server_ip
并以与连接到 localhost db 相同的方式连接来尝试与远程 postgres 的类似 localhost 的连接。这可以帮助调试。
我使用以下选项解决了这个问题:
将您的数据库主机从您的网络团队列入白名单,以确保您可以访问远程主机 安装 postgreSQL 版本 4 或更高版本 运行以下命令: psql -h
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
我想到了。
必须在 postgresql.conf
中设置 listen_addresses='*'
以允许来自任何 ip / all ip 的传入连接
下面是明智的
打开端口 - 确保 PSQL 端口根据您的要求对所有远程连接或来自特定 IP 集的连接开放。 PSQL 一般运行在 5432 端口,并且是可配置的,因此相应地暴露相关端口。更新远程服务器 PSQL 配置 - 在 postgresql.conf 文件中设置 listen_addresses = '*',一般路径是 /etc/postgresql/psql_version/main/postgresql.conf 远程连接 - psql -U
下面的小优点 - 如果 IP 已映射到域名,您可以通过将 <IP_address>
替换为 <host_name>
来连接。为此,在 pg_hba.conf
文件中添加新的连接规则
注意 - 以上所有解释都可能导致安全问题 - 最佳实践始终是关闭 psql 端口,或者只允许 IP 列表通过端口连接。
请注意,pg_hba.conf 中的“ident”需要在客户端上运行“ident server”。
psql -h <surus.db.elephantsql.com> -U <user>
。主机可以在免费版本中更改,然后我必须添加密码,该密码与 URL 字符串中的用户用冒号分隔。