使用 pgAdmin 访问远程 Postgres 服务器
Posted
技术标签:
【中文标题】使用 pgAdmin 访问远程 Postgres 服务器【英文标题】:Access remote Postgres server with pgAdmin 【发布时间】:2011-09-02 16:09:23 【问题描述】:我在我的 XP 机器上运行了 pgAdmin。网络上有一台运行 Postgres 服务器的 Centos 机器。 Postgres 服务器pg_hba.conf
文件有以下几行
TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 10.0.0.68/32 trust
local mydb myuser password
local all postgres ident
host mydb myuser 10.0.0.68/32 password
host all postgres 10.0.0.68/32 trust
我的postgresql.conf
文件有以下行:
listen_address = 'localhost, 10.0.20.10'
nmap -sS 10.0.20.10
显示:
PORT STATE SERVICE
5432/tcp open postgresql
我可以 ssh 进入服务器上的 bash shell,但我无法连接到 pgAdmin。我得到以下信息:
无法连接到服务器:没有到主机的路由(0x00002751/10065)是 在主机“10.0.20.10”上运行并接受 TCP/IP 连接的服务器 在 5432 端口上?
我不知道问题出在哪里。
【问题讨论】:
确保 Postgres 服务器已重新启动(例如,listen_address
更改需要重新启动)。我想这可能是一些防火墙问题。
尝试使用 ssh 访问端口 5432,在 pgadmin3 中的数字 ip-adres(而不是主机名)上尝试(可能是过时的 DNS 条目)是否涉及任何 NAT/防火墙?
是的,这是防火墙问题。 'service iptables stop' 启用了连接。我会写一个规则来允许连接。感谢您的意见。
【参考方案1】:
@Aidan 自己找到了解决方案:
这是防火墙问题。
service iptables stop
启用连接。我就写一条规则来允许连接。
【讨论】:
你可以很容易地添加一个 iptable 规则来转发到正确的端口,而不是关闭你的防火墙。【参考方案2】:假设服务器的IP地址是10.0.20.10
,那么你可以像@Dark Star1在cmets中建议的那样添加这些iptable规则:
iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 10.0.20.10 --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 10.0.20.10 --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
【讨论】:
以上是关于使用 pgAdmin 访问远程 Postgres 服务器的主要内容,如果未能解决你的问题,请参考以下文章
CentOS 8.2使用pgAdmin安装PostgreSQL
docker postgres pgadmin 本地连接
Postgres 中的 pg_class 是啥以及如何使用 pgAdmin 4 查看它?
如何在 Ubuntu 上使用 pgAdmin 将 Postgres 连接到 localhost 服务器?