当前位置: 首页 > news >正文

PGsql安装教程

一、目标安装方案

最终会得到:

项目说明
PostgreSQL版本14.x
安装方式源码编译安装
依赖安装全部离线RPM
编译目录/opt/pgsql_make
安装目录/opt/pgsql14
数据目录/opt/pgsql14/data
服务管理systemd
用户postgres

二、先检查系统是否具备编译环境

先创建检测脚本:

mkdir /opt/pgsql_make vi /opt/pgsql_make/check_pgsql_env.sh

写入:

#!/bin/bash # ========================================================= # PostgreSQL 14 编译环境检测脚本 # 说明: # 1. 区分【必须】与【可选】依赖 # 2. 显示缺失原因与用途 # 3. 兼容 openEuler / CentOS / Kylin / RHEL # ========================================================= echo "==================================================" echo " PostgreSQL 14 编译安装环境检测" echo "==================================================" must_lack=0 optional_lack=0 # --------------------------------------------------------- # 输出颜色 # --------------------------------------------------------- RED='\033[31m' GREEN='\033[32m' YELLOW='\033[33m' BLUE='\033[36m' RESET='\033[0m' # --------------------------------------------------------- # 检测命令 # 参数: # 1: 命令 # 2: 是否必须(must/optional) # 3: 作用说明 # --------------------------------------------------------- check_cmd() { local cmd=$1 local level=$2 local desc=$3 if command -v ${cmd} >/dev/null 2>&1; then echo -e "${GREEN}[OK]${RESET} 命令: ${cmd}" else if [ "${level}" = "must" ]; then echo -e "${RED}[必须,且缺失]${RESET} 命令: ${cmd}" echo -e " 作用: ${desc}" must_lack=1 else echo -e "${YELLOW}[可选,缺失]${RESET} 命令: ${cmd}" echo -e " 作用: ${desc}" optional_lack=1 fi fi } # --------------------------------------------------------- # 检测RPM包 # 参数: # 1: 包名 # 2: 是否必须(must/optional) # 3: 作用说明 # --------------------------------------------------------- check_rpm() { local pkg=$1 local level=$2 local desc=$3 if rpm -q ${pkg} >/dev/null 2>&1; then echo -e "${GREEN}[OK]${RESET} RPM: ${pkg}" else if [ "${level}" = "must" ]; then echo -e "${RED}[必须,且缺失]${RESET} RPM: ${pkg}" echo -e " 作用: ${desc}" must_lack=1 else echo -e "${YELLOW}[可选,缺失]${RESET} RPM: ${pkg}" echo -e " 作用: ${desc}" optional_lack=1 fi fi } echo echo "================ 基础编译工具(必须) ================" check_cmd gcc must "C语言编译器,PostgreSQL核心编译必须" check_cmd g++ optional "提供C++编译支持,部分扩展可能需要" check_cmd make must "执行Makefile编译流程" check_cmd ld must "GNU链接器,生成最终可执行文件" check_cmd perl must "PostgreSQL部分构建脚本依赖Perl" check_cmd tar must "解压源码包" echo echo "================ PostgreSQL核心依赖(必须) ================" check_rpm readline-devel must "提供命令行历史记录与上下方向键支持" check_rpm zlib-devel must "支持数据压缩功能" check_rpm openssl-devel must "支持SSL/TLS加密连接" echo echo "================ PostgreSQL功能增强(可选) ================" check_rpm ncurses-devel optional "如需需安装readline-deve,就必须存在,可忽略" check_rpm libxml2-devel optional "支持XML功能(XML类型/XPath)" check_rpm libxslt-devel optional "支持XML/XSLT转换" check_cmd flex optional "仅开发PostgreSQL源码时需要" check_cmd bison optional "仅修改SQL语法解析器时需要" check_cmd wget optional "在线下载源码包时需要" echo echo "================ 运行环境(建议安装) ================" check_rpm readline optional "psql命令行体验增强" check_rpm zlib optional "运行时压缩支持" check_rpm openssl optional "SSL运行支持" check_rpm libxml2 optional "XML运行支持" check_rpm libxslt optional "XSLT运行支持" echo echo "================ 系统管理工具(建议安装) ================" check_cmd useradd optional "创建postgres用户" check_cmd systemctl optional "注册systemd服务" echo echo "==================================================" if [ ${must_lack} -eq 0 ]; then echo -e "${GREEN}[OK] PostgreSQL14 必须环境完整${RESET}" else echo -e "${RED}[ERROR] PostgreSQL14 必须环境缺失,无法正常编译${RESET}" fi if [ ${optional_lack} -eq 1 ]; then echo -e "${YELLOW}[提示] 存在可选组件缺失,但不影响基础编译安装${RESET}" fi echo "=================================================="

赋权:

chmod +x /opt/pgsql_make/check_pgsql_env.sh

执行:

/opt/pgsql_make/check_pgsql_env.sh

三、联网机器下载 Redis 编译依赖

方式1(推荐):使用 yumdownloader

先安装:

yuminstallyum-utils-y

创建目录:

mkdirredis_rpmscdredis_rpms

下载:

dnf download--resolve--alldeps\gcc\gcc-c++\make\readline-devel\zlib-devel\openssl-devel\libxml2-devel\libxslt-devel\flex\bison\perl\perl-ExtUtils-Embed\wget\tar

作用:

  • --resolve
    会自动下载依赖链。

方式2:在联网服务器中查看版本,并在网上下载

先搜索联网服务器中相关版本,入vim:

rpm -qf $(which vim)

得出相关版本到对应发行商rpm源中下载:

查不出具体的系统版本,可以去系统默认的rpm源查看,系统指向的那个路径,一般路径中就有对应的版本

进入源存放目录:

cd /etc/yum.repos.d/

查看目录下源内容

#麒麟服务器系统: cat kylin_x86_64.repo #openEuler: cat openEuler.repo

麒麟V10: [Index of /NS/V10/V10SP3/os/adv/lic/base/x86_64/Packages/](Index of /NS/V10/)

openEuler: repo.openeuler.org/openEuler-24.03-LTS-SP2/OS/x86_64/Packages/

下在对应rpm,并上传

安装:

rpm -ivh *********.rpm

四、下载 PostgreSQL14 源码包

官方下载:

PostgreSQL官网:PostgreSQL Source Download


五、传输到麒麟服务器

把:

  • postgresql-14.23.tar.gz

传到:

/opt/pgsql_make

六、创建postgres用户

groupadd postgres useradd -g postgres postgres

设置密码:

passwd postgres

密码:

Cqabj@208

七、编译安装 PostgreSQL14

1. 解压

cd /opt/pgsql_make tar -zxvf /opt/pgsql_make/postgresql-14.23.tar.gz

2. 编译

cd postgresql-14.23

创建数据库目录:

mkdir -p /opt/postgreSQL

配置:

./configure \ --prefix=/opt/postgreSQL \ --with-openssl \

如果成功会看到:

config.status: creating GNUmakefile

3. 编译

make -j 4

CPU多可以改:

make -j $(nproc)

4. 安装

make install

八、初始化数据库

1. 创建数据和日志目录(以root用户执行):

mkdir -p /opt/postgreSQL/data mkdir -p /opt/postgreSQL/logs chown -R postgres:postgres /opt/postgreSQL

2. 初始化

切换用户:

su - postgres

进入数据库bin目录:

cd /opt/postgreSQL/bin

初始化,执行:

./initdb -D /opt/postgreSQL/data

九、启动 PostgreSQL

启动:

# 尝试启动 ./pg_ctl -D /opt/postgreSQL/data -l /opt/postgreSQL/logs/postgresql.log start # 查看状态 ./pg_ctl -D /opt/postgreSQL/data status # 尝试停止 ./pg_ctl -D /opt/postgreSQL/data stop

查看:

ps -ef | grep postgres

登录:

./psql

新初始化的数据库默认没有密码(或依赖本地系统用户认证),为了远程登录的安全,必须先设置一个强密码:

ALTER USER postgres WITH PASSWORD 'cqabj208';

创建"epms2025"数据库

CREATE DATABASE "epms2025" WITH ENCODING = 'UTF8'

创建"ep-server2025"数据库

CREATE DATABASE "ep-server2025" WITH ENCODING = 'UTF8'

退出pgsql:

exit;

或者杀死进程:

ps -ef | grep postgres

找出类似postgres -D /opt/postgreSQL/data杀掉


十、配置systemd服务

退回到root用户:

exit

创建并编辑 Systemd 服务配置文件:

vi /usr/lib/systemd/system/postgreSQL.service

写入:

[Unit] Description=PostgreSQL 14 database server Documentation=https://www.postgresql.org/docs/14/static/ After=network.target [Service] Type=forking User=postgres Group=postgres # 核心环境变量设置 Environment=PGDATA=/opt/postgreSQL/data # 启动、停止、重载命令均使用全路径执行 ExecStart=/opt/postgreSQL/bin/pg_ctl start -D ${PGDATA} -s -w -t 300 ExecStop=/opt/postgreSQL/bin/pg_ctl stop -D ${PGDATA} -s -m fast ExecReload=/opt/postgreSQL/bin/pg_ctl reload -D ${PGDATA} -s KillMode=mixed TimeoutSec=300 [Install] WantedBy=multi-user.target

刷新:

systemctl daemon-reload

启动:

systemctl start postgreSQL

查看状态:

systemctl status postgreSQL#如何没退回终端,是日志太长,按q请退出

开机自启:

systemctl enable postgreSQL

十一、开放远程连接(可选)

编辑:

vi /opt/postgreSQL/data/postgresql.conf

修改:

listen_addresses='*'

编辑:

vi /opt/postgreSQL/data/pg_hba.conf

增加:

# TYPE DATABASE USER ADDRESS METHOD host all all 0.0.0.0/0 scram-sha-256

重启:

systemctl restart postgreSQL

十二、最容易踩的坑

问题原因
openssl版本不兼容系统自带国密OpenSSL
readline缺失最常见
perl模块缺失编译PL/pgSQL时
gcc版本低导致编译失败
locale问题initdb报错
http://www.jsqmd.com/news/1140194/

相关文章:

  • Knife4j 4.4 + Spring Boot 3:OpenAPI3文档配置与Bearer认证集成
  • 炉石传说HsMod插件:5个技巧让你的游戏体验提升300%
  • 如何用小说下载器一键保存全网小说:新手完整指南
  • 练拳击之后,我发现“代码耦合”和“动作僵硬”是同一件事
  • 图像归一化实战:5种方法在ResNet-50图像分类任务中的性能影响分析
  • 如何快速解锁惠普游戏本性能:OmenSuperHub终极控制指南
  • Seedance2.5本地AI生图与视频生成工具全面评测
  • Python 后端基础(十八):Nginx 怎么用,反向代理、静态资源、HTTPS 和负载均衡讲清楚
  • VTube Studio API架构:虚拟主播系统的WebSocket通信与事件驱动设计
  • vLLM与SGLang推理框架性能横评的技术文章大纲
  • 于react19+vite8+arco+zustand搭建后台管理模板【基础框架】
  • 基于SpringBoot+Vue高校社团平台
  • 【Bug已解决】OpenClaw 升级后报错 Invalid configuration key: legacy_path 解决方案
  • CLIP ViT-B/32 零样本图像分类实战:CIFAR-100 数据集 Top-5 准确率 65.31%
  • 阿里云天池森林火灾数据集分析:3步完成数据预处理与特征工程
  • ChanlunX缠论分析插件:从手工绘图到算法识别的技术跃迁
  • 抖音动态监控助手:5分钟部署,实时追踪博主更新与直播提醒
  • Awards | 百奥几何唐建博士获 WWW 2026 Test of Time Award
  • Web安全入门实战:从零搭建合法靶场与核心漏洞手动测试指南
  • TensorFlow 2.x 石头剪刀布数据集实战:ImageDataGenerator 5种数据增强效果对比
  • RT-DETR升级:CVPR2026 FourierSR+RepC3|全局频域建模+重参数化融合,轻量高精实时检测
  • hw-buaa-lab项目路线图:未来技术发展与学习规划展望
  • 终极指南:3步实现塞尔达传说Switch与WiiU存档自由互通
  • 计算机毕业设计之jsp农作物生长监测系统的设计与实现
  • 软件测试实战指南:从接口自动化到性能压测的完整落地方案
  • 搞懂 Linux 内核容器技术,才算真正吃透 Linux 内核底层
  • 降重降AI工具哪家强?多款AI降重平台实测对比
  • 大学生必备7款AI论文写作工具,一站式搞定选题初稿与降AI率
  • AI技术助力SEO关键词优化的有效 Strategies
  • Notepad--跨平台文本编辑器:国产软件的终极替代方案