PostgreSQL 部署完成后必须做的 10 件事
新手必看:PostgreSQL部署后的10个关键配置要点 本文总结了PostgreSQL部署后必须立即完成的10项安全配置,避免常见数据库事故。核心建议包括:1)禁止postgres超级用户远程登录;2)遵循最小权限原则分配业务用户权限;3)限制访问IP范围;4)监控数据目录和磁盘空间;5)配置日志收集与轮转;6)制定基础备份策略;7)设置合理的最大连接数;8)确认字符集编码;9)设置数据库自启动
目录
四、第 3 件事:限制访问 IP,而不是 0.0.0.0/0
否则数据库迟早会出问题(新手必看)
前一篇我们已经完成了 PostgreSQL 在 Linux 服务器上的完整部署。
但我要直接说一个很多教程不会告诉你的事实:
数据库“能用”,和“能长期安全运行”,完全是两回事。
现实中大量 PostgreSQL 问题,并不是装错,而是——
装完之后什么都没管。
这篇文章,我就站在“真实项目”的角度,讲清楚:
PG 部署完成后,我一定会立刻做的 10 件事。
一、先说结论:这 10 件事是“保命操作”
如果你只想记住一句话:
数据库事故,80% 不是 SQL 写错,而是环境和权限问题。
下面这 10 条,至少能帮你避开大多数新手坑。
二、第 1 件事:禁止 postgres 超级用户远程登录
postgres 是 超级用户,一旦泄露,等于裸奔。
做法建议
在 pg_hba.conf 中:
# 禁止 postgres 远程
host all postgres 0.0.0.0/0 reject
原则:
-
超级用户只允许本地使用
-
业务永远用普通用户
三、第 2 件事:只给业务用户“最小权限”
新手最常见操作:
GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user;
在小项目里没问题,但你至少要明白:
-
不要随意给 SUPERUSER
-
不要让业务用户创建角色
-
权限越小,事故越小
四、第 3 件事:限制访问 IP,而不是 0.0.0.0/0
教程常用:
host all all 0.0.0.0/0 md5
这是为了方便演示,不是最佳实践。
更合理的是:
host all all 192.168.1.0/24 md5
数据库 ≠ Web 服务
能少暴露,就少暴露。
五、第 4 件事:明确数据目录和磁盘空间
你必须清楚三件事:
-
数据目录在哪
-
日志写在哪
-
这个磁盘还能撑多久
SHOW data_directory;
df -h
数据库磁盘满 = 高概率事故
六、第 5 件事:开启并理解日志(不是只“有日志”)
至少确认:
-
日志是否开启
-
日志是否在写
-
日志是否会轮转
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d.log'
没日志的数据库,出问题只能靠猜。
七、第 6 件事:明确备份策略(哪怕是最原始的)
你可以什么都不做,但不能没备份意识。
最基础的备份方式:
pg_dump app_db > app_db.sql
哪怕一天一次,都比“完全没有”强。
八、第 7 件事:限制最大连接数(非常容易忽略)
默认配置对新手来说往往偏大或不合理。
max_connections = 100
连接数失控时:
-
数据库负载飙升
-
应用雪崩
九、第 8 件事:确认字符集和编码
SHOW server_encoding;
SHOW client_encoding;
编码问题,一旦出现在生产环境,代价极高。
十、第 9 件事:确认数据库启动顺序
数据库是基础服务:
systemctl enable postgresql-14
否则:
-
服务器重启
-
服务先起
-
数据库没起 → 整站不可用
十一、第 10 件事:记录你的“数据库变更”
哪怕你现在只有你一个人:
-
改了什么配置
-
为什么改
-
改的时间
数据库最怕“没人知道它被改过”。
更多推荐
所有评论(0)