温馨提示×

centos postgresql网络配置说明

小樊
40
2025-11-22 04:49:20
栏目: 云计算

CentOS 上 PostgreSQL 网络配置要点

一 配置文件与关键参数

  • 配置文件位置通常为:/var/lib/pgsql/<版本号>/data/,核心文件包括:
    • postgresql.conf:网络监听与端口等全局参数
    • pg_hba.conf:基于主机、用户、数据库的访问控制
  • 常用参数与示例
    • postgresql.conf
      • listen_addresses:监听地址,设为 ‘*’ 监听所有接口,或指定内网地址如 ‘192.168.50.24’
      • port:监听端口,默认 5432
    • pg_hba.conf(按行匹配,自上而下)
      • 示例:host all all 192.168.6.0/24 md5(允许 192.168.6.0/24 网段以密码方式连接)
      • 示例:host all all 0.0.0.0/0 md5(允许所有 IPv4,生产环境不建议)
      • 认证方式常用:md5(密码哈希)、scram-sha-256(更安全)、peer(本机操作系统用户映射)、trust(免密,慎用)

二 远程访问配置步骤

  1. 修改监听与端口
    • 编辑 postgresql.conf:设置 listen_addresses = ‘*’(或指定内网 IP),确认 port = 5432
  2. 配置客户端认证
    • 编辑 pg_hba.conf:为需要的来源网段添加规则,例如
      • host all all 192.168.6.0/24 md5
      • 如需临时全网放行:host all all 0.0.0.0/0 md5(请结合安全策略使用)
  3. 使配置生效
    • 需要重启的配置(如 listen_addresses、port):执行
      • systemctl restart postgresql-<版本号>
    • 仅调整访问规则时,可热加载:
      • 以数据库目录为工作目录执行:pg_ctl reload,或 pg_ctl -D /var/lib/pgsql/<版本号>/data reload
  4. 防火墙放行
    • CentOS 7(firewalld)
      • firewall-cmd --permanent --add-port=5432/tcp
      • firewall-cmd --reload
    • CentOS 8(firewalld 服务名方式)
      • firewall-cmd --permanent --add-service=postgresql
      • firewall-cmd --reload
  5. 验证监听
    • 执行:ss -tulnp | grep 5432,应看到 0.0.0.0:5432:::5432 处于监听状态

三 认证与安全建议

  • 生产环境避免使用 trust,对外网开放时禁止使用;内网按最小权限开放网段与数据库对象
  • 密码存储建议优先 scram-sha-256,兼容性与安全性优于 md5
  • 示例(pg_hba.conf,按业务收紧)
    • 内网网段:host all all 192.168.50.0/24 scram-sha-256
    • 本地 Unix 套接字:local all all peer(保持系统用户与数据库用户一致性)
    • 复制用户:host replication replicator 192.168.50.0/24 scram-sha-256
  • 修改认证方式后,通常需要重启数据库或至少重载配置,并重新测试连接

四 常见问题排查

  • 服务未运行:执行 systemctl status postgresql-<版本号>;未运行则 systemctl start 并设置开机自启
  • 监听地址不对:确认 postgresql.conflisten_addressesport,并用 ss -tulnp | grep 5432 检查是否监听 0.0.0.0:5432
  • 防火墙阻断:按上文放行 5432/tcppostgresql 服务,并重新加载
  • 认证被拒:检查 pg_hba.conf 中对应来源网段、数据库、用户与 METHOD 是否匹配;必要时重载或重启
  • 客户端连接失败:核对 主机 IP、端口、用户名、密码;查看数据库日志(常见路径 /var/log/postgresql/)获取具体错误

0