说实话,我第一次装 PostgreSQL 的时候,心里还挺没底的。那会儿我刚从 MySQL 转过来,觉得数据库安装无非就是一步一步的事儿。结果一查文档,发现 PG 的安装方式多得让人眼花缭乱——源码编译、二进制包、yum 源、apt‑get,甚至还有 Docker 镜像。每种方式都有自己的脾气,踩坑点也不一样。不过装过几次后,我发现只要搞清楚自己的使用场景,选对方法,整个过程其实比想象中顺畅得多。

先说说最省事的二进制包安装。如果你用的是 CentOS 或者 RHEL 系的系统,直接加 PG 的官方 yum 源就行。操作很简单:先装个 ,然后从 PG 官网复制对应的 repo 文件, 一下就完事儿。装完之后别忘了跑一下 ,这个命令会初始化数据库集群。我第一次就是漏了这步,直接启动服务,结果日志里报了一堆错,折腾了半天才发现根本没创建数据目录。Ubuntu 用户更简单, 一步到位,系统会自动帮你初始化好,连用户和组都配好了。这种方式的优点是快、稳,适合生产环境。缺点是版本更新需要等系统源更新,想尝鲜新特性就得等一阵子。
如果你是个喜欢掌控一切的人,源码编译安装会更对你的胃口。从 PG 官网下载源码包,解压后依次执行 、。但这里有个坑:编译过程中会依赖很多库,比如 readline、zlib 等。我见过一个哥们儿在服务器上装 PG,configure 时报错说找不到 ,他直接加了 参数跳过,结果后来用 psql 时,命令行编辑功能全废了,上下键都没法用,只能硬着头皮敲 SQL。所以建议编译前先把依赖装全,例如 。源码安装的好处是可以自定义编译选项,比如指定安装路径、启用某些扩展。坏处是升级维护麻烦,每次打补丁都得重新编译一遍。
再说说 Docker 方式,这年头用容器装 PG 的人越来越多。 拉取镜像,然后 ,一分钟内就能跑起来一个实例。但这里有个容易踩的坑:默认情况下,容器里的数据存储在容器内部,一旦容器被删,数据就全没了。所以一定要用卷挂载,例如 。另外,Docker 版的 PG 默认只暴露 5432 端口,如果需要远程连接,还得在启动命令里加上 。这种方式最适合开发、测试环境,或者微服务架构里需要快速弹性的场景。但在生产环境要慎用,容器的网络、存储和安全隔离都需要额外配置。
装完之后,第一件事就是改密码并配置远程访问。PG 默认只监听 localhost,且默认的 postgres 用户密码是空的。我见过有人装完 PG 后直接跑业务,结果被安全扫描工具扫出漏洞,因为空密码加上允许所有 IP 访问,简直就是在裸奔。正确的做法是:先 切换到 pg 用户,然后 进入数据库,用 设置强密码。接着编辑 ,把 改为 或者具体 IP。在 里添加一行 ,注意生产环境千万别用 ,而是限定具体网段。修改完配置文件后,重启 PG 服务:。
有些细节新手容易忽略。比如 PG 的日志文件默认在 下,如果数据库启动失败,第一反应就是去看这个日志。还有,PG 的默认端口是 5432,但如果在同一台机器上装多个实例,就得改端口号。PG 的内存配置也很讲究, 通常设置为物理内存的 25% 左右, 要根据查询复杂度调整,默认的 4 MB 对生产环境来说太小了。这些参数都在 里可以调,改完后记得重启。
说到扩展,PG 的一大优势就是丰富的生态。装完基础版后,建议马上装上 包,里面包含了 (性能监控)、(UUID 生成)、(空间地理数据)等常用扩展。比如 ,它能记录每条 SQL 的执行频率、耗时和 IO 消耗,是排查慢查询的利器。安装方法很简单: 或者 ,然后在数据库里执行 。有些扩展需要额外依赖,例如 PostGIS 需要装 GEOS 和 PROJ 库,但大部分扩展都是开箱即用的。
聊聊版本选择。PG 的版本号策略是每年一个大版本,比如 13、14、15、16。大版本之间的数据文件格式不兼容,升级需要 工具或逻辑复制。所以生产环境选版本时,建议选当前最新的稳定版,或者往前推一个版本——比如现在 16 是最新版,就可以选 15,因为 15 已经经过一年多的打磨,bug 修得差不多了。开发环境可以随意折腾,甚至使用测试版尝鲜。PG 官方每个大版本提供 5 年的维护周期,别再使用 10 以下的版本,已经停止更新了。如果你使用云服务商提供的 RDS for PostgreSQL,版本升级、备份、高可用等都可以全自动搞定。
总的来说,PG 的安装不难,难的是装完之后怎么根据业务场景调优。很多人装完就以为万事大吉,结果跑了一段时间发现性能不行,或者安全出问题。所以我的建议是:装之前想清楚用途,装的时候严格按照官方文档操作,装完后花点时间配置和测试。毕竟数据库是业务的基石,前期多花点心思,后面能少踩很多坑。如果你现在正准备装 PG,不妨先在小环境里练练手,等熟悉了这套流程,再上生产也不迟。


