PGsql安装教程 📅 2026/7/7 8:48:20 一、目标安装方案最终会得到项目说明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_lack0 optional_lack0 # --------------------------------------------------------- # 输出颜色 # --------------------------------------------------------- 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 21; then echo -e ${GREEN}[OK]${RESET} 命令: ${cmd} else if [ ${level} must ]; then echo -e ${RED}[必须,且缺失]${RESET} 命令: ${cmd} echo -e 作用: ${desc} must_lack1 else echo -e ${YELLOW}[可选,缺失]${RESET} 命令: ${cmd} echo -e 作用: ${desc} optional_lack1 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 21; then echo -e ${GREEN}[OK]${RESET} RPM: ${pkg} else if [ ${level} must ]; then echo -e ${RED}[必须,且缺失]${RESET} RPM: ${pkg} echo -e 作用: ${desc} must_lack1 else echo -e ${YELLOW}[可选,缺失]${RESET} RPM: ${pkg} echo -e 作用: ${desc} optional_lack1 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密码:Cqabj208七、编译安装 PostgreSQL141. 解压cd /opt/pgsql_make tar -zxvf /opt/pgsql_make/postgresql-14.23.tar.gz2. 编译cd postgresql-14.23创建数据库目录:mkdir -p /opt/postgreSQL配置./configure \ --prefix/opt/postgreSQL \ --with-openssl \如果成功会看到config.status: creating GNUmakefile3. 编译make -j 4CPU多可以改make -j $(nproc)4. 安装make install八、初始化数据库1. 创建数据和日志目录以root用户执行mkdir -p /opt/postgreSQL/data mkdir -p /opt/postgreSQL/logs chown -R postgres:postgres /opt/postgreSQL2. 初始化切换用户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] DescriptionPostgreSQL 14 database server Documentationhttps://www.postgresql.org/docs/14/static/ Afternetwork.target [Service] Typeforking Userpostgres Grouppostgres # 核心环境变量设置 EnvironmentPGDATA/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 KillModemixed TimeoutSec300 [Install] WantedBymulti-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版本不兼容系统自带国密OpenSSLreadline缺失最常见perl模块缺失编译PL/pgSQL时gcc版本低导致编译失败locale问题initdb报错