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 是一个非常值得选择的数据库方案


相关推荐
lihui_cbdd19 小时前
AMBER 24 生产环境部署完全指南(5090可用)
linux·计算化学
生活很暖很治愈1 天前
Linux基础开发工具
linux·服务器·git·vim
似霰1 天前
Linux Shell 脚本编程——核心基础语法
linux·shell
LUCIFER1 天前
[驱动进阶——MIPI摄像头驱动(五)]rk3588+OV13855摄像头驱动加载过程详细解析第四部分——ISP驱动
linux·驱动开发
暮云星影1 天前
四、linux系统 应用开发:UI开发环境配置概述 (一)
linux·ui·arm
a程序小傲1 天前
得物Java面试被问:RocketMQ的消息轨迹追踪实现
java·linux·spring·面试·职场和发展·rocketmq·java-rocketmq
Ghost Face...1 天前
i386 CPU页式存储管理深度解析
java·linux·服务器
LEEE@FPGA1 天前
zynq 是不是有了设备树,再linux中不需要编写驱动也能控制
linux·运维·单片机
RisunJan1 天前
Linux命令-less(分页查看器)
linux·运维
梁正雄1 天前
linux服务-MariaDB 10.6 Galera Cluster+garbd
linux·运维·mariadb