执行 firewalld 后无法访问 pgAdmin4 服务器模式
pgAdmin4 server mode not accessable after executing firewalld
我在服务器模式下安装了 PostgreSQL 12、PostGIS 和 pgAdmin4。我可以通过域名访问pgAdmin4。但是,当我尝试通过 QGIS 或 RStudio 访问 PostgreSQL 数据库时,出现以下错误:
Is the server running on host <ServerName> and accepting TCP/IP connections on port 5432?
我将 postgresql.conf
文件设置为
local_address = '0.0.0.0'
pg_hba.conf
和
host all all 0.0.0.0/0 md5
host all all ::/0 md5
即使在这个改变之后,我也无法通过QGIS访问数据库,所以我参考了这个http://www.project-open.com/en/howto-postgresql-port-secure-remote-access。按照这个过程,我执行了:
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
现在,我可以通过 QGIS 访问数据库,但无法访问现在出现错误的 pgAdmin4:
The connection has timed out
The server at <ServerName> is taking too long to respond
执行$ netstat -na
结果:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
tcp 0 320 45.56.73.78:22 47.185.238.169:50439 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:*
udp6 0 0 ::1:53481 ::1:53481 ESTABLISHED
raw6 0 0 :::58 :::* 7
我觉得这是由于防火墙的变化,但我没有足够的经验来解决这个问题。任何帮助都会很棒,谢谢!
服务器:Ubuntu 20.04
我通过使用以下命令在防火墙中设置附加端口 80/tcp
解决了这个问题:
附加前的状态:
$ firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 5432/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
添加 80/tcp:
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --reload
$ firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 5432/tcp 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
我在服务器模式下安装了 PostgreSQL 12、PostGIS 和 pgAdmin4。我可以通过域名访问pgAdmin4。但是,当我尝试通过 QGIS 或 RStudio 访问 PostgreSQL 数据库时,出现以下错误:
Is the server running on host <ServerName> and accepting TCP/IP connections on port 5432?
我将 postgresql.conf
文件设置为
local_address = '0.0.0.0'
pg_hba.conf
和
host all all 0.0.0.0/0 md5
host all all ::/0 md5
即使在这个改变之后,我也无法通过QGIS访问数据库,所以我参考了这个http://www.project-open.com/en/howto-postgresql-port-secure-remote-access。按照这个过程,我执行了:
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
现在,我可以通过 QGIS 访问数据库,但无法访问现在出现错误的 pgAdmin4:
The connection has timed out
The server at <ServerName> is taking too long to respond
执行$ netstat -na
结果:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
tcp 0 320 45.56.73.78:22 47.185.238.169:50439 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:*
udp6 0 0 ::1:53481 ::1:53481 ESTABLISHED
raw6 0 0 :::58 :::* 7
我觉得这是由于防火墙的变化,但我没有足够的经验来解决这个问题。任何帮助都会很棒,谢谢!
服务器:Ubuntu 20.04
我通过使用以下命令在防火墙中设置附加端口 80/tcp
解决了这个问题:
附加前的状态:
$ firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 5432/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
添加 80/tcp:
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --reload
$ firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 5432/tcp 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules: