CentOS 7 搭建 PostgreSQL 14 实战指南

文章目录

  • [CentOS 7 搭建 PostgreSQL 14 实战指南](#CentOS 7 搭建 PostgreSQL 14 实战指南)
  • [PostgreSQL 是做什么的?](#PostgreSQL 是做什么的?)
  • [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 仓库,不依赖系统自带源。

官方文档地址:

https://www.postgresql.org/download/linux/redhat/

安装 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_VERSION
  • base/
  • global/
  • pg_hba.conf
  • postgresql.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_dumpinitdbpsql 导入

3️⃣ 测试环境 vs 生产环境

  • 测试环境:0.0.0.0/0 可接受
  • 生产环境:
    • 建议限制网段
    • 配合防火墙 / 安全组
    • 使用专用数据库账号

小结

本文完整演示了在 CentOS 7.9 环境下部署 PostgreSQL 14 的全过程,并结合真实踩坑经验,补充了仓库失效、配置错误等高频问题。

PostgreSQL 14 是一款 稳定、可靠、强调数据正确性的企业级开源数据库

相比早期版本,它在性能、安全性和并发能力上都有明显提升,尤其适合 SonarQube、分析系统及中大型后端服务。

虽然运维和升级成本略高,但在追求长期稳定和数据质量的场景下,PostgreSQL 14 是一个非常值得选择的数据库方案


相关推荐
AlfredZhao1 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐2 天前
Linux内存扩容指南
linux
zylyehuo3 天前
Linux 彻底且安全地删除文件
linux
用户805533698033 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297913 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者5 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo5 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10156 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao7 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3108 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql