温馨提示×

如何安全CentOS PostgreSQL

小樊
45
2026-07-21 10:25:39
栏目: 云计算

CentOS 上安装并安全配置 PostgreSQL,可以按下面步骤来(以 CentOS 7 / 8 为例,PostgreSQL 15 为示例版本,其他版本类似)。


一、安装 PostgreSQL

1. 添加官方 PostgreSQL 仓库(推荐)

# CentOS 7
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# CentOS 8
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2. 安装 PostgreSQL

sudo yum install -y postgresql15-server postgresql15-contrib

3. 初始化数据库

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

4. 启动并设置开机自启

sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

二、基础安全配置(非常重要)

1. 修改 PostgreSQL 管理员密码

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'StrongPassword123!';
\q

三、限制访问(防止被入侵)

1. 修改监听地址(只允许本机或指定 IP)

编辑配置文件:

sudo vi /var/lib/pgsql/15/data/postgresql.conf

推荐配置:

listen_addresses = 'localhost'

或指定 IP:

listen_addresses = '192.168.1.100'

2. 配置访问控制(pg_hba.conf)

sudo vi /var/lib/pgsql/15/data/pg_hba.conf

安全示例:

# 本地 socket 登录
local   all   all   peer

# 本地 TCP 登录(需要密码)
host    all   all   127.0.0.1/32   scram-sha-256

# 远程 IP(按需开放)
# host  all   all   192.168.1.0/24   scram-sha-256

⚠️ 不要使用 trustmd5(已不安全)


四、防火墙配置(CentOS)

1. 如果只允许本机

sudo firewall-cmd --permanent --remove-service=postgresql
sudo firewall-cmd --reload

2. 如果允许远程访问

sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload

五、禁用或保护默认账号

1. 禁止 postgres 系统用户直接登录

sudo passwd -l postgres

2. 使用专用业务账号

CREATE USER appuser WITH PASSWORD 'AppUser@2025';
GRANT CONNECT ON DATABASE mydb TO appuser;

六、日志与审计

编辑:

sudo vi /var/lib/pgsql/15/data/postgresql.conf

推荐:

logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_duration_statement = 500   # 慢查询

七、定期备份(安全的一部分)

pg_dump 示例

sudo -u postgres pg_dump mydb > /backup/mydb_$(date +%F).sql

八、升级与安全维护

  • 定期更新 PostgreSQL
sudo yum update postgresql15*
  • 关注安全公告:
    https://www.postgresql.org/support/security/

九、常见安全错误(一定要避免)

❌ 使用默认密码
❌ 对外开放 5432 端口
❌ 使用 trust 认证
❌ 用 postgres 账号跑业务程序
❌ 关闭日志


如果你愿意,我可以:

  • ✅ 给你 CentOS 7 / 8 一键安全脚本
  • ✅ 帮你 检查现有 PostgreSQL 是否安全
  • ✅ 教你 生产环境高安全配置(SSL、审计、权限最小化)

直接告诉我你的 CentOS 版本 + PostgreSQL 版本 即可。

0