文章目录
- [CentOS 7 搭建 PostgreSQL 14 实战指南](#CentOS 7 搭建 PostgreSQL 14 实战指南)
- [PostgreSQL 是做什么的?](#PostgreSQL 是做什么的?)
- [PostgreSQL 14 的核心特点](#PostgreSQL 14 的核心特点)
-
- [标准 SQL + 扩展能力强](#标准 SQL + 扩展能力强)
- 数据一致性强(ACID)
- [PostgreSQL 14 的性能提升(相对老版本)](#PostgreSQL 14 的性能提升(相对老版本))
- 安全性更完善
- 跨平台、生态成熟
- [PostgreSQL 14 与 MySQL 的简单对比](#PostgreSQL 14 与 MySQL 的简单对比)
- [为什么选择 PostgreSQL 14](#为什么选择 PostgreSQL 14)
- [安装 PostgreSQL 官方 YUM 仓库](#安装 PostgreSQL 官方 YUM 仓库)
-
- [安装 PGDG 仓库 RPM](#安装 PGDG 仓库 RPM)
- [安装 PostgreSQL 14 Server](#安装 PostgreSQL 14 Server)
- 初始化数据库(非常关键)
- 启动并设置开机自启
- [CentOS 7 + PostgreSQL 12 仓库报错说明(常见问题)](#CentOS 7 + PostgreSQL 12 仓库报错说明(常见问题))
-
- [✅ 解决方案:禁用 pgdg12 仓库](#✅ 解决方案:禁用 pgdg12 仓库)
- [配置 PostgreSQL 允许远程访问](#配置 PostgreSQL 允许远程访问)
-
- [1️⃣ 修改 postgresql.conf](#1️⃣ 修改 postgresql.conf)
- [2️⃣ 修改 pg_hba.conf](#2️⃣ 修改 pg_hba.conf)
- [3️⃣ 重启 PostgreSQL 服务](#3️⃣ 重启 PostgreSQL 服务)
- [设置 postgres 用户密码](#设置 postgres 用户密码)
- 验证远程连接
- 常见问题与注意事项
-
- [1️⃣ pg_hba.conf 配置错误导致 PostgreSQL 无法启动](#1️⃣ pg_hba.conf 配置错误导致 PostgreSQL 无法启动)
- [2️⃣ PostgreSQL 大版本不能直接复用旧数据目录](#2️⃣ PostgreSQL 大版本不能直接复用旧数据目录)
- [3️⃣ 测试环境 vs 生产环境](#3️⃣ 测试环境 vs 生产环境)
- 小结
CentOS 7 搭建 PostgreSQL 14 实战指南
环境说明
- 操作系统:CentOS Linux release 7.9.2009 (Core)
- 数据库版本:PostgreSQL 14.x
- 安装方式:PostgreSQL 官方 PGDG YUM 仓库
随着 CentOS 7 逐步进入维护末期、PostgreSQL 12 官方下线,越来越多的场景需要在 CentOS 7 上直接部署 PostgreSQL 14 。本文将以一次真实的安装与排错过程为例,完整演示从 安装 → 初始化 → 启动 → 远程访问配置 → 常见坑位说明 的全过程。
⚠️ 本文以测试 / 学习环境为主,生产环境请结合安全策略与网络隔离进行调整。
PostgreSQL 是做什么的?
PostgreSQL 14(简称 PG14) 是一款 开源的关系型数据库管理系统(RDBMS) ,主要用于 安全、可靠、高并发地存储和管理结构化数据。
一句话理解:
PostgreSQL = 企业级开源数据库,用来存"核心业务数据"的
PostgreSQL 14 = 在性能、并发、索引、SQL 能力上进一步成熟的一代版本
常见使用场景
PostgreSQL 14 常用于:
- 🧩 业务系统数据库
- 用户、订单、交易、配置数据
- 🔍 代码质量 / 分析系统
- SonarQube、数据统计平台
- 📊 数据分析与报表
- BI 系统、指标计算
- ⚙️ 微服务 / 后端系统
- Spring Boot、Django、FastAPI
- ☁️ 云原生环境
- Kubernetes + StatefulSet
PostgreSQL 14 的核心特点
标准 SQL + 扩展能力强
PostgreSQL 对 SQL 标准支持度非常高,同时支持:
- 复杂 JOIN / 子查询
- 视图、物化视图
- 触发器、函数、存储过程
- JSON / JSONB(半结构化数据)
既能当传统数据库,也能"半 NoSQL 使用"。
数据一致性强(ACID)
PostgreSQL 天生强调 数据正确性:
- ACID 事务完整支持
- MVCC(多版本并发控制)
- 崩溃恢复可靠
适合 金融、风控、账务、分析系统。
PostgreSQL 14 的性能提升(相对老版本)
相比 PostgreSQL 12/13,PG14 在以下方面有明显提升:
- 🚀 高并发场景性能更稳定
- 🚀 并行查询、并行索引创建效率更高
- 🚀 B-Tree 索引膨胀问题进一步缓解
- 🚀 连接管理与锁冲突优化
对 SonarQube、报表类系统提升非常明显
安全性更完善
PG14 默认推荐:
scram-sha-256密码认证- SSL / TLS 加密
- 细粒度角色与权限控制
比早期 md5 方式安全得多。
跨平台、生态成熟
支持平台:
- Linux(主流生产环境)
- Windows
- macOS
生态成熟:
- pgAdmin
- pg_dump / pg_restore
- logical / physical replication
- 大量第三方插件(PostGIS、TimescaleDB 等)
PostgreSQL 14 与 MySQL 的简单对比
| 对比项 | PostgreSQL 14 | MySQL 8 |
|---|---|---|
| SQL 能力 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 事务一致性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| JSON 支持 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 运维复杂度 | 较高 | 较低 |
| 授权风险 | 无 | 有(部分版本) |
为什么选择 PostgreSQL 14
- PostgreSQL 14 是 长期支持版本(LTS)
- 对并行查询、索引、连接性能有明显提升
- 完整支持
scram-sha-256认证方式 - 能很好地支撑 SonarQube 9.x / 10.x 等现代应用
安装 PostgreSQL 官方 YUM 仓库
PostgreSQL 官方为 RHEL / CentOS 系列提供了独立的 PGDG 仓库,不依赖系统自带源。
官方文档地址:

安装 PGDG 仓库 RPM
bash
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
安装完成后,会在 /etc/yum.repos.d/ 下生成多个 pgdg 相关 repo 文件。
安装 PostgreSQL 14 Server
bash
sudo yum install -y postgresql14-server
安装完成后,主要目录如下:
- 程序目录:
/usr/pgsql-14/ - 数据目录:
/var/lib/pgsql/14/data/ - systemd 服务:
postgresql-14.service
初始化数据库(非常关键)
PostgreSQL 安装完成 ≠ 可以直接启动,必须先初始化数据目录。
bash
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
初始化完成后,数据目录中会生成:
PG_VERSIONbase/global/pg_hba.confpostgresql.conf
启动并设置开机自启
一定要看完,目前起来是无法连接的,下边有配置
bash
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
验证状态:
bash
systemctl status postgresql-14
正常状态应为:
text
Active: active (running)
CentOS 7 + PostgreSQL 12 仓库报错说明(常见问题)
在实际操作中,很多机器曾经安装过 PostgreSQL 12,会遇到如下报错:
❗ One of the configured repositories failed (PostgreSQL 12 for RHEL / CentOS 7)
原因是:
- PostgreSQL 12 已 EOL
- PGDG 官方已删除 PG12 对应的 CentOS 7 仓库路径
✅ 解决方案:禁用 pgdg12 仓库
bash
yum-config-manager --disable pgdg12
禁用后,yum 即可恢复正常使用。
配置 PostgreSQL 允许远程访问
默认情况下,PostgreSQL 只允许本机访问,如果用于测试或多机连接,需要手动调整配置。
1️⃣ 修改 postgresql.conf
bash
cp /var/lib/pgsql/14/data/postgresql.conf /var/lib/pgsql/14/data/postgresql.conf-bak
vim /var/lib/pgsql/14/data/postgresql.conf
修改监听地址:
ini
listen_addresses = '*'
表示监听所有网卡 IP。
2️⃣ 修改 pg_hba.conf
bash
vim /var/lib/pgsql/14/data/pg_hba.conf
增加或修改如下内容:
text
# IPv4 remote connections
host all all 0.0.0.0/0 scram-sha-256
⚠️ 注意:字段顺序必须严格遵守
TYPE DATABASE USER ADDRESS METHOD
3️⃣ 重启 PostgreSQL 服务
bash
systemctl restart postgresql-14
设置 postgres 用户密码
切换到 postgres 系统用户:
bash
su - postgres
进入 psql:
bash
psql -U postgres
设置密码:
sql
\password
示例:
text
Enter new password for user "postgres":
Enter it again:
本文示例中密码设置为:
password

验证远程连接
在其他主机上测试连接:
bash
psql -h <服务器IP> -U postgres -p 5432
如果可以正常进入数据库,说明远程访问配置成功。

常见问题与注意事项
1️⃣ pg_hba.conf 配置错误导致 PostgreSQL 无法启动
典型错误:
text
invalid IP mask "scram-sha-256"
原因是 字段写错顺序,把认证方式写到了 ADDRESS 列。
2️⃣ PostgreSQL 大版本不能直接复用旧数据目录
- PG12 数据目录 ❌ 不能直接给 PG14 用
- 正确方式:
pg_dump→initdb→psql导入
3️⃣ 测试环境 vs 生产环境
- 测试环境:
0.0.0.0/0可接受 - 生产环境:
- 建议限制网段
- 配合防火墙 / 安全组
- 使用专用数据库账号
小结
本文完整演示了在 CentOS 7.9 环境下部署 PostgreSQL 14 的全过程,并结合真实踩坑经验,补充了仓库失效、配置错误等高频问题。
PostgreSQL 14 是一款 稳定、可靠、强调数据正确性的企业级开源数据库 。
相比早期版本,它在性能、安全性和并发能力上都有明显提升,尤其适合 SonarQube、分析系统及中大型后端服务。
虽然运维和升级成本略高,但在追求长期稳定和数据质量的场景下,PostgreSQL 14 是一个非常值得选择的数据库方案
