PostgreSQL在CentOS中的网络配置指南
导读:一 环境准备与版本差异 确认系统版本:常见为 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
- 禁用系统模块:
- CentOS 7(yum)
- 配置文件默认目录(按版本不同):
- /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-256 或 md5,避免使用 trust/peer 暴露给不可信网络。
- 本地套接字:建议保留
- 重启数据库使配置生效:
- CentOS 7:
sudo systemctl restart postgresql-13 - CentOS Stream 9:
sudo systemctl restart postgresql-16
以上配置项与示例可直接用于常见网络场景。
- CentOS 7:
三 防火墙与云安全组放行
- firewalld(系统防火墙):
- 放行端口:
sudo firewall-cmd --permanent --add-port=5432/tcp - 重载规则:
sudo firewall-cmd --reload
- 放行端口:
- 云服务器:在云平台安全组放行 TCP 5432,仅允许应用所在网段访问。
- 端口连通性自检:
- 本机监听:
ss -tnlp | grep :5432或netstat -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-256 或 md5,禁用 trust/peer 对公网开放。
- 启用 SSL:在
postgresql.conf中配置ssl = on并部署服务器证书,客户端使用sslmode=require。 - 最小权限:按“最小权限原则”创建业务用户与数据库,避免使用 postgres 超级用户直连应用。
- 限制来源网段:将
- 常见问题排查:
- 服务未监听:确认
listen_addresses与port正确并重启服务。 - 认证失败:核对
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
