首页主机资讯PostgreSQL在CentOS中的网络配置指南

PostgreSQL在CentOS中的网络配置指南

时间2025-11-28 11:51:04发布访客分类主机资讯浏览978
导读:一 环境准备与版本差异 确认系统版本:常见为 CentOS 7/8/Stream 9,不同版本的包管理器与默认路径略有差异。 安装与初始化(示例命令,按版本替换数字): CentOS 7(yum) 添加仓库:sudo yum inst...

一 环境准备与版本差异

  • 确认系统版本:常见为 CentOS 7/8/Stream 9,不同版本的包管理器与默认路径略有差异。
  • 安装与初始化(示例命令,按版本替换数字):
    • CentOS 7(yum)
      • 添加仓库:sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
      • 安装服务:sudo yum install -y postgresql13-server
      • 初始化:sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
      • 启停:sudo systemctl enable --now postgresql-13
    • CentOS Stream 9(dnf)
      • 禁用系统模块:sudo dnf -qy module disable postgresql
      • 添加仓库:sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
      • 安装服务:sudo dnf install -y postgresql16-server postgresql16-contrib
      • 初始化:sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
      • 启停:sudo systemctl enable --now postgresql-16
  • 配置文件默认目录(按版本不同):
    • /var/lib/pgsql/13/data/(PostgreSQL 13)
    • /var/lib/pgsql/16/data/(PostgreSQL 16)
  • 防火墙常用命令(firewalld):
    • 放行端口:sudo firewall-cmd --permanent --add-port=5432/tcp
    • 重载规则:sudo firewall-cmd --reload
      以上步骤与路径在不同版本中通用,仅版本号与初始化命令不同。

二 核心网络参数配置

  • 编辑 postgresql.conf(启用网络监听与端口):
    • 打开监听所有地址:listen_addresses = '*'
    • 端口:port = 5432(默认)
    • 说明:修改后需重启数据库生效。
  • 编辑 pg_hba.conf(客户端认证与来源网段):
    • 本地套接字:建议保留 local all all peer(本地系统用户映射更安全)
    • 本地回环:建议 host all all 127.0.0.1/32 md5(密码认证)
    • 内网网段示例:host all all 192.168.1.0/24 md5(按需替换为你的网段)
    • 远程全网示例:host all all 0.0.0.0/0 md5(仅测试或严格限制来源时使用)
    • 认证方式建议:生产环境优先使用 scram-sha-256md5,避免使用 trust/peer 暴露给不可信网络。
  • 重启数据库使配置生效:
    • CentOS 7:sudo systemctl restart postgresql-13
    • CentOS Stream 9:sudo systemctl restart postgresql-16
      以上配置项与示例可直接用于常见网络场景。

三 防火墙与云安全组放行

  • firewalld(系统防火墙):
    • 放行端口:sudo firewall-cmd --permanent --add-port=5432/tcp
    • 重载规则:sudo firewall-cmd --reload
  • 云服务器:在云平台安全组放行 TCP 5432,仅允许应用所在网段访问。
  • 端口连通性自检:
    • 本机监听:ss -tnlp | grep :5432netstat -tnlp | grep :5432
    • 远程测试:psql -h < 服务器IP> -U < 用户名> -d < 数据库> -p 5432
      以上步骤确保操作系统与云平台层面的网络可达性。

四 用户与数据库准备

  • 切换到数据库系统用户:sudo -iu postgres
  • 登录并修改超级用户密码:psql -c "ALTER USER postgres WITH PASSWORD 'StrongPass!123'; "
  • 创建应用用户与数据库(示例):
    • CREATE USER deploy_user WITH PASSWORD 'StrongPass!123' LOGIN CREATEDB;
    • CREATE DATABASE app_db OWNER deploy_user;
    • GRANT ALL PRIVILEGES ON DATABASE app_db TO deploy_user;
  • 连接测试:psql -h < 服务器IP> -U deploy_user -d app_db -p 5432
    以上命令覆盖从本地到远程的常见连接与授权流程。

五 安全加固与常见问题

  • 安全加固建议:
    • 限制来源网段:将 pg_hba.conf 中的 0.0.0.0/0 替换为最小必要网段(如 192.168.1.0/24)。
    • 使用强认证:优先 scram-sha-256md5,禁用 trust/peer 对公网开放。
    • 启用 SSL:在 postgresql.conf 中配置 ssl = on 并部署服务器证书,客户端使用 sslmode=require
    • 最小权限:按“最小权限原则”创建业务用户与数据库,避免使用 postgres 超级用户直连应用。
  • 常见问题排查:
    • 服务未监听:确认 listen_addressesport 正确并重启服务。
    • 认证失败:核对 pg_hba.conf 的网段、用户、数据库与 METHOD(如 md5/scram-sha-256)。
    • 端口不通:检查 firewalld/云安全组与云厂商安全策略是否放行 5432/tcp
    • 监听地址错误:若仅监听 127.0.0.1 将导致远程不可达,需改为 listen_addresses = '*'
      以上做法可显著提升安全性并快速定位常见故障。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PostgreSQL在CentOS中的网络配置指南
本文地址: https://pptw.com/jishu/758876.html
PostgreSQL数据库升级至最新版CentOS兼容性 CentOS系统中PostgreSQL的资源占用优化

游客 回复需填写必要信息