说起数据库安装,很多人的第一反应是“装个软件嘛,下一步下一步就行了”。但真到了生产环境,尤其是碰上 PostgreSQL 这种开源数据库,事情就没那么简单了。我见过太多开发同学,在本地装个 PG 玩玩挺顺畅,一上线就各种报错:权限不对、端口被占、数据目录挂载位置错了、甚至版本兼容性问题。今天这篇,我把 PG 数据库从零安装的完整流程掰开揉碎讲清楚,不玩虚的,全是实操经验。

先说说安装前的准备工作。PG 官方支持主流 Linux 发行版,比如 CentOS、Ubuntu、Debian,也支持 Windows 和 macOS,但生产环境我强烈推荐 Linux,尤其是 CentOS 7 或 Ubuntu 20.04 LTS。为什么?因为 Linux 下的 PG 性能更稳定,而且能利用系统自带的包管理器轻松安装。如果你用的是 CentOS,记得先更新系统源,把 EPEL 和 PGDG 仓库加上。PGDG 是 PostgreSQL 全球开发组的官方仓库,里面的版本最新最全。比如我在一台 CentOS 7 机器上,直接执行就把源配好了。这一步很多人会忽略,结果装了系统自带的老版本,后面踩坑无数。
接下来是安装过程。命令其实就一行:注意版本号,我用了 15,这是目前最稳定的长期支持版。装完后,系统会自动创建一个名为 postgres 的操作系统用户,这是 PG 的默认管理员。安装包还会生成 /usr/pgsql-15/bin 目录,里面全是 PG 工具,比如 psql、pgctl、initdb。这时候千万别急着启动服务,需要先初始化数据目录。PG 的数据目录默认在 /var/lib/pgsql/15/data,但生产环境我建议改到独立磁盘分区,比如 /data/pgdata,方便管理和备份。初始化命令是必须用 postgres 用户来执行,否则权限会乱。初始化结束后,会看到一堆提示信息,包括区域设置、编码格式,默认是 UTF‑8,国内项目够用了。
初始化完,别急着启动服务,先改配置文件。PG 的核心配置是 postgresql.conf 和 pghba.conf。前者控制监听地址、端口、内存参数等,后者控制客户端访问权限。默认情况下,PG 只监听 localhost,生产环境得改。打开 postgresql.conf,找到 一行,改成 ,表示监听所有网络接口。端口默认 5432,一般不用改,但要记得在防火墙放行。内存参数方面, 建议设为物理内存的 25%,比如服务器有 16 GB 内存,设 4 GB; 设 4‑8 MB,不要太大,否则并发高的场景会爆内存。 设物理内存的 50%‑75%,帮助查询优化器做决策。这些参数调对了,性能能提升不少。改完保存后,再打开 pghba.conf,添加一行允许任意 IP 用密码登录。生产环境最好限制具体网段,别这么粗放。
配置改完,就可以启动服务了。用设置开机自启。启动后,验证一下:以 postgres 用户执行能进入交互终端就说明成功了。这时候第一件事是改密码,默认是空的,太危险。在 psql 里执行密码设复杂点,大小写字母加数字和符号。然后创建业务数据库和用户:这一步很多新手会忘,直接用 postgres 用户连业务库是大忌,权限太宽。
安装完了不代表万事大吉,还得做几个安全检查。第一,防火墙配置:第二,日志监控:PG 的日志默认在 /var/lib/pgsql/15/data/log 下,建议开启 记录所有修改操作,方便排查问题。第三,自动备份:写个 crontab 脚本,每天凌晨用 全量备份,保留最近 7 天。例如第四,版本升级:PG 小版本升级很简单,用 就行,但大版本迁移要用 或逻辑复制,千万别直接覆盖数据目录。
说个常见坑。很多人装完 PG,发现远程连不上,第一反应是防火墙没开,其实更可能是 pghba.conf 没配好。默认配置里只有 和 的信任登录,外网 IP 都被拒绝。我见过一个项目,开发在阿里云 ECS 上装了 PG,配了公网 IP,却死活连不上,排查半天发现是 pg_hba.conf 里少了 。所以装完后一定要检查这个文件。另外,如果用的是云服务器,安全组规则也得配好,很多云平台默认禁止 5432 端口。PG 安装不难,但细节决定成败。从源配置到初始化、从权限管理到性能调优,每一步都值得花时间琢磨。毕竟数据库是应用的心脏,装好了,后面开发运维都省心。


