Firewalld如何将端口开放给所有IP?PostgreSQL端口配置求助
解决firewalld开放PostgreSQL端口给所有IP的问题
错误原因
你执行的--add-source= *命令出错,是因为shell会把*解析成当前目录下的所有文件名,导致命令被错误地附加了额外参数(比如mysql80-community-release-el9-1.noarch.rpm),firewalld无法识别这些参数。
正确配置方法
要允许所有IP访问PostgreSQL,不需要用通配符*,而是用CIDR地址段表示所有IP:
1. 允许所有IPv4地址访问
执行以下命令:
sudo firewall-cmd --permanent --zone=postgresqlrule --add-source=0.0.0.0/0
2. (可选)允许所有IPv6地址访问
如果需要支持IPv6,补充执行:
sudo firewall-cmd --permanent --zone=postgresqlrule --add-source=::/0
3. 重新加载firewalld配置
执行命令使配置生效:
sudo firewall-cmd --reload
额外注意事项
仅开放防火墙还不够,需要同时修改PostgreSQL的配置,允许外部连接:
- 编辑
postgresql.conf,将listen_addresses设置为'*' - 编辑
pg_hba.conf,添加一行:host all all 0.0.0.0/0 scram-sha-256(根据你的认证方式调整,比如旧版本可使用md5) - 重启PostgreSQL服务使配置生效:
sudo systemctl restart postgresql
内容的提问来源于stack exchange,提问作者joepaji
相关产品推荐
相关产品推荐

