openEuler 2403 防火墙与 SELinux 配置:确保 PostgreSQL 17 端口正常访问

1. 确认 PostgreSQL 端口
  • 查看配置文件确认端口号(默认 5432):
    grep '^port' /var/lib/pgsql/17/data/postgresql.conf
    

  • 检查运行状态:
    ss -tulnp | grep postgres
    

2. 防火墙配置(firewalld)
  • 开放默认端口 5432
    firewall-cmd --permanent --add-port=5432/tcp
    firewall-cmd --reload
    

  • 验证规则:
    firewall-cmd --list-ports | grep 5432
    

3. SELinux 配置
  • 允许 PostgreSQL 网络访问:
    setsebool -P httpd_can_network_connect_db 1
    

  • 为自定义端口添加标签(如 5433):
    semanage port -a -t postgresql_port_t -p tcp 5433
    

  • 验证端口标签:
    semanage port -l | grep postgresql
    

4. 验证连接
  • 本地测试:
    psql -h 127.0.0.1 -U postgres
    

  • 远程测试(使用 telnetnc):
    telnet <服务器IP> 5432
    

5. 故障排查
  • 检查 SELinux 日志:
    grep "AVC.*denied" /var/log/audit/audit.log | grep postgres
    

  • 临时禁用 SELinux 测试:
    setenforce 0  # 测试后务必恢复: setenforce 1
    

6. 持久化配置
  • 保存防火墙规则:
    firewall-cmd --runtime-to-permanent
    

  • 确保 SELinux 布尔值永久生效:
    semanage boolean -m httpd_can_network_connect_db --on
    

关键提示

  • 若使用非默认端口,需同步修改防火墙和 SELinux 规则
  • 生产环境建议保持 SELinux 为 enforcing 模式
  • PostgreSQL 服务名可能为 postgresql-17.service,使用 systemctl 管理

$$ \text{配置成功标志:} \quad \boxed{\text{远程客户端可正常连接数据库服务}} $$

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐