PostgreSQL一键安装操作文档🚀

7 阅读1分钟

PostgreSQL一键安装操作文档🚀

支持在线/离线安装,x86和ARM架构,切换国内源,自动化配置,轻松管理插件和扩展


📋 目录


📝 脚本简介

本脚本是一个功能强大的 PostgreSQL 自动化安装工具,支持从源码编译安装 PostgreSQL 12-18 版本,适用于 x86_64 和 ARM64 架构。

✨ 核心特性

  • 🔥 双模式安装:支持在线下载和离线tar包安装
  • 📦 多版本支持:PostgreSQL 12.x 到 18.x 全版本
  • 💻 跨架构兼容:完美支持 x86_64 和 ARM64、切换国内腾讯源
  • 🧩 插件管理:10+ 种常用插件一键安装
  • 📊 智能编译:自动检测CPU核心数,支持并行编译
  • 🌐 远程访问配置:一键配置 Navicat 远程连接
  • 🔐 密码安全设置:支持免密登录、预设密码、自定义密码

🎯 功能特性

核心功能对比

功能在线安装离线安装
从官网下载源码
使用本地tar包
自动安装依赖显示依赖列表
插件编译支持
contrib扩展安装
编译模式选择
服务管理

支持的插件

插件功能依赖
opensslSSL/TLS加密openssl-devel
perlPerl存储过程perl-devel
pythonPython存储过程python3-devel
tclTcl存储过程tcl-devel
uuidUUID生成libossp-uuid-devel / uuid-dev
xmlXML数据类型libxml2-devel
icu国际化支持libicu-devel
ldapLDAP认证openldap-devel
pamPAM认证pam-devel
systemdsystemd集成systemd-devel

🖥 系统要求

操作系统支持

✅ CentOS 7/8/9
✅ RHEL 7/8/9
✅ Ubuntu 18.04/20.04/22.04
✅ Debian 9/10/11
✅ 其他基于 RPM/DEB 的 Linux 发行版

硬件要求

组件最低配置推荐配置
CPU2核4核及以上
内存2GB4GB及以上
磁盘10GB20GB及以上
架构x86_64/ARM64x86_64/ARM64

软件依赖

# 必需
bash 4.0+
gcc 编译器
make 构建工具
readline-devel 或 libreadline-dev
zlib-devel 或 zlib1g-dev

# 可选(用于在线下载)
curl 或 wget

🚀 快速开始

方式一:在线安装(推荐)

# 1. 下载脚本
wget https://your-server.com/install_postgresql18.sh
chmod +x install_postgresql18.sh

# 2. 运行脚本
sudo ./install_postgresql18.sh

# 3. 选择安装方式
1. 全新安装PostgreSQL(在线)

# 4. 选择版本
1. 使用默认版本 (18.1)

# 5. 选择配置
1. 使用默认配置

# 6. 等待安装完成
# 通常需要 10-30 分钟

方式二:离线安装

# 1. 准备PostgreSQL tar.gz包
# 下载地址: https://www.postgresql.org/ftp/source/

# 2. 安装基础依赖(根据系统)
# CentOS/RHEL
yum install -y gcc make readline-devel zlib-devel

# Ubuntu/Debian
apt-get install -y build-essential libreadline-dev zlib1g-dev

# 3. 运行脚本
sudo ./install_postgresql18.sh

# 4. 选择离线安装
4. 离线安装PostgreSQL(使用本地tar.gz包)

# 5. 指定tar包路径
/path/to/postgresql-18.1.tar.gz

# 6. 配置安装参数并等待编译完成

默认配置

参数默认值
版本18.1
用户名postgres
用户组postgres
安装目录/mnt/data/postgresql
数据目录/mnt/data/postgresql/data
端口5432
密码postgres

📖 详细操作步骤

1️⃣ 在线安装流程

步骤1:选择安装模式
检测到 x86_64 架构
PostgreSQL 自动化安装脚本
支持 x86ARM 架构

请选择操作:
1. 全新安装PostgreSQL(在线)
2. 直接初始化数据库(需要PostgreSQL已编译安装)
3. 安装内置扩展(contrib4. 离线安装PostgreSQL(使用本地tar.gz包)
m. 选择下载镜像源(当前: 官网镜像)
q. 退出

请选择 [1/2/3/4/m/q]: 1
步骤2:选择版本
请选择PostgreSQL版本:
1. 使用默认版本 (18.1)
2. 查询12.x版本
3. 查询13.x版本
4. 查询14.x版本
5. 查询15.x版本
6. 查询16.x版本
7. 查询17.x版本
8. 查询18.x版本
9. 手动输入版本号
b. 返回上级菜单
q. 退出安装

请选择 [1-9/b/q]: 8
步骤3:确认配置
请确认PostgreSQL安装配置:
PostgreSQL版本: 18.1
用户名: postgres
用户组: postgres
安装目录: /mnt/data/postgresql
端口号: 5432
密码: postgres

1. 使用默认配置
2. 自定义配置
3. 重新选择版本
b. 返回上级菜单
q. 退出安装

请选择 [1/2/3/b/q]: 1
步骤4:选择插件
可用插件列表:
----------------------------------------
openssl      - OpenSSL支持 (SSL/TLS连接)
perl         - Perl存储过程支持
python       - Python存储过程支持
tcl          - Tcl存储过程支持
uuid         - UUID支持 (默认ossp,可选e2fs)
xml          - XML支持
icu          - ICU支持
ldap         - LDAP认证支持
pam          - PAM认证支持
bonjour      - Bonjour支持
systemd      - systemd集成支持
----------------------------------------

请输入需要安装的插件名称,多个用空格分隔(或直接回车跳过): 
步骤5:选择编译模式
请选择编译模式:
1. 并行编译(推荐,使用所有CPU核心)
2. 智能并行编译(自动调整核心数)
3. 单线程编译(兼容性最好)
4. 自定义并行数

请选择 [1-4]: 1

系统信息:
  可用CPU核心数: 8

最终编译配置:
  CPU核心数: 8
  使用核心数: 8
  编译模式: 并行编译

2️⃣ 离线安装流程

步骤1:查找tar包
=====================================
PostgreSQL 离线安装模式
=====================================

查找PostgreSQL离线安装包...

请输入PostgreSQL tar.gz包的路径或目录:
  - 完整路径: /path/to/postgresql-xx.x.x.tar.gz
  - 目录路径: /path/to/ (会自动查找目录中的tar.gz包)
b. 返回主菜单

请输入路径 [或输入b返回]: /opt/packages/postgresql-18.1.tar.gz

找到PostgreSQL源码包: /opt/packages/postgresql-18.1.tar.gz
版本: 18.1

是否使用此包? [y/N]: y
步骤2:配置参数
PostgreSQL 离线安装配置
----------------------------------------
  版本: 18.1
  Tar包: /opt/packages/postgresql-18.1.tar.gz
----------------------------------------

请配置PostgreSQL安装参数

是否使用默认配置? [y/N]: n

请输入用户名 [postgres]: pguser
请输入用户组 [postgres]: pggroup
请输入安装目录 [/mnt/data/postgresql]: /opt/postgresql
请输入端口号 [5432]: 5433
请输入密码 [默认: postgres]: ********

最终配置:
  PostgreSQL版本: 18.1
  用户名: pguser
  用户组: pggroup
  安装目录: /opt/postgresql/postgresql-18.1
  数据目录: /opt/postgresql/data
  端口号: 5433
  密码: postgres

是否确认使用此配置? [y/N]: y
步骤3:选择插件(离线模式)
请选择需要编译安装的插件
  注: 离线模式下,请确保已手动安装插件所需的依赖

可用插件列表:
----------------------------------------
openssl      - OpenSSL支持 (SSL/TLS连接)
python       - Python存储过程支持
uuid         - UUID支持 (默认ossp,可选e2fs)
xml          - XML支持
----------------------------------------

请输入需要安装的插件,多个用空格分隔(或直接回车跳过): openssl uuid
步骤4:依赖检查(离线模式提示)
离线安装模式: 跳过在线依赖安装

请确保已手动安装以下依赖包:

  CentOS/RHEL:
    - yum groupinstall "Development Tools"
    - yum install readline-devel zlib-devel gcc make

  Ubuntu/Debian:
    - apt-get install build-essential libreadline-dev zlib1g-dev
步骤5:编译安装
离线安装模式: 跳过插件依赖在线安装
请确保已手动安装以下插件依赖:

  CentOS/RHEL:
    - yum install openssl-devel libossp-uuid-devel

  Ubuntu/Debian:
    - apt-get install libssl-dev libossp-uuid-dev

是否继续编译? [y/N]: y

请选择编译模式:
1. 并行编译(推荐,使用所有CPU核心)
2. 智能并行编译(自动调整核心数)
3. 单线程编译(兼容性最好)
4. 自定义并行数

请选择 [1-4]: 1

最终编译配置:
  CPU核心数: 8
  使用核心数: 8
  编译模式: 并行编译

执行命令: ./configure --without-readline --prefix=/opt/postgresql/postgresql-18.1 ...
编译命令: make -j8 && make install

3️⃣ 直接初始化数据库

适用于已编译但未初始化的 PostgreSQL。

# 选择选项 2
请选择操作:
1. 全新安装PostgreSQL(在线)
2. 直接初始化数据库(需要PostgreSQL已编译安装)
3. 安装内置扩展(contrib)
4. 离线安装PostgreSQL(使用本地tar.gz包)

请选择 [1/2/3/4/q]: 2

# 输入参数
请输入PostgreSQL安装路径:
例如 /mnt/data/pgsql/postgresql-18.1: /opt/postgresql/postgresql-18.1

请输入数据目录路径:
例如 /mnt/data/pgsql/data: /opt/postgresql/data

请输入PostgreSQL用户名:
默认 [postgres]: pguser

4️⃣ 插件和扩展管理

主菜单
# 选择选项 3
请选择操作:
1. 全新安装PostgreSQL(在线)
2. 直接初始化数据库(需要PostgreSQL已编译安装)
3. 安装内置扩展(contrib)
4. 离线安装PostgreSQL(使用本地tar.gz包)

请选择 [1/2/3/4/q]: 3
子菜单
请输入PostgreSQL安装路径:
例如 /mnt/data/pgsql/postgresql-18.1: /opt/postgresql/postgresql-18.1

请选择操作:
1. 安装外部插件(需要重新编译,如openssl, python等)
2. 安装内置扩展(contrib扩展,如pg_trgm, pgcrypto等)
3. 同时安装外部插件和内置扩展
b. 返回主菜单

请选择 [1/2/3/b]:
安装外部插件
请选择要安装的插件(多个用空格分隔):
例如: openssl python uuid: uuid

将使用以下配置重新编译PostgreSQL:
  --without-readline --prefix=/opt/postgresql --with-pgport=5432 --enable-thread-safety --with-uuid=ossp

是否继续? [y/N]: y
安装内置扩展
扫描contrib目录...

找到以下contrib模块:
1. dblink - 跨数据库连接
2. fuzzystrmatch - 模糊字符串匹配
3. pgcrypto - 加密函数
4. unaccent - 重音字符转换
5. citext - 不区分大小写文本
6. uuid-ossp - UUID生成
7. pg_trgm - 文本相似度计算

请选择安装方式:
1. 安装所有contrib模块
2. 仅安装常用模块
3. 手动选择模块

请选择 [1/2/3]: 2

🗑️ 卸载指南

使用卸载脚本

脚本提供自动搜索和手动输入两种方式。

# 1. 运行卸载脚本
sudo ./uninstall_postgresql.sh

# 2. 选择卸载方式
请选择PostgreSQL卸载方式:
1. 自动搜索系统中的PostgreSQL安装
2. 手动输入安装目录和数据目录

请选择 [1/2]: 1

自动搜索模式

=====================================
搜索系统中的PostgreSQL安装...
=====================================

从 /etc/profile 读取 PostgreSQL 环境变量...
  找到 PG_HOME: /mnt/data/postgresql
  找到 PGDATA: /mnt/data/postgresql/data

运行中的PostgreSQL进程:
  - PID: 12345, 命令: postgres: logger process

PostgreSQL端口监听:
  - tcp  0  0  0.0.0.0:5432  LISTEN  12345/postgres

找到的PostgreSQL服务:
  - postgresql18.service (运行中)

找到的PostgreSQL安装:
  1. 路径: /mnt/data/postgresql
     版本: 18.1
     数据目录: /mnt/data/postgresql/data

  0. 手动输入路径

请选择要卸载的PostgreSQL安装 [0-1]: 1

已选择: /mnt/data/postgresql

手动输入模式

手动输入PostgreSQL路径

请输入PostgreSQL安装目录:
例如: /data/di/postgresql/postgresql-18.1: /opt/postgresql

请输入PostgreSQL数据目录:
例如: /data/di/postgresql/data: /opt/postgresql/data

手动输入的配置:
安装目录: /opt/postgresql
数据目录: /opt/postgresql/data
主目录: /opt

确认使用这些路径? [y/N]: y

卸载选项

# 命令行参数
./uninstall_postgresql.sh [选项]

选项:
  -u, --user USER      PostgreSQL用户名 (默认: postgres)
  -g, --group GROUP    PostgreSQL用户组 (默认: postgres)
  -i, --install-dir DIR PostgreSQL安装目录
  -d, --data-dir DIR   PostgreSQL数据目录
  -y, --yes            跳过确认提示
  --dry-run            仅显示将要删除的内容,不实际删除
  --help               显示帮助信息

# 示例
./uninstall_postgresql.sh -y                    # 跳过确认直接卸载
./uninstall_postgresql.sh --dry-run            # 预览将要删除的内容
./uninstall_postgresql.sh -u pguser -d /pg/data  # 指定用户和数据目录

Dry Run 模式

# 预览删除内容
./uninstall_postgresql.sh --dry-run

将要删除以下内容:
----------------------------------------
PostgreSQL用户: postgres
PostgreSQL用户组: postgres
安装目录: /mnt/data/postgresql
数据目录: /mnt/data/postgresql/data
主目录: /mnt/data/postgresql
相关服务: postgresql18.service
可能存在的配置文件:
  - /etc/profile.d/postgresql.sh
  - /etc/sysconfig/pgsql
环境变量配置: /etc/profile (包含PostgreSQL配置)
----------------------------------------

[预览] 将删除安装目录: /mnt/data/postgresql
[预览] 将删除数据目录: /mnt/data/postgresql/data
[预览] 将停止服务: postgresql18.service
[预览] 将删除服务文件: /etc/systemd/system/postgresql18.service

❓ 常见问题

Q1: 环境变量未配置或者没生效?

编辑/etc/profile配置变量后需要进行source,使用脚本安装会正确的配置变量如何已经安装或需要时候归档和卸载脚本则需要配置
# PostgreSQL Environment


export PG_HOME=/mnt/data/pgsql/postgresql-18.1

export PGDATA=/mnt/data/pgsql/data

export PATH=$PG_HOME/bin:$PATH

export MANPATH=$PG_HOME/share/man:$MANPATH

# End PostgreSQL Environment

Q2: 离线安装需要准备什么?

1. PostgreSQL tar.gz 源码包
   下载地址: https://www.postgresql.org/ftp/source/
   
2. 基础编译依赖
   CentOS/RHEL:
     yum install -y gcc make readline-devel zlib-devel
   
   Ubuntu/Debian:
     apt-get install -y build-essential libreadline-dev zlib1g-dev

3. 插件依赖(如果需要)
   根据选择的插件,提前安装对应的开发包

Q3: 编译核心数如何选择?

1. 并行编译(推荐)
   - 使用所有CPU核心
   - 适用于大多数场景
   - 编译速度最快

2. 智能并行编译
   - 根据系统负载自动调整
   - 适用于生产环境
   - 避免影响其他服务

3. 单线程编译
   - 使用单核心
   - 兼容性最好
   - 适用于编译出错时

4. 自定义并行数
   - 手动指定核心数
   - 适用于高级用户
   - 精确控制资源占用

Q4: 编译失败怎么办?

1. 查看错误日志
   cat /tmp/postgres_configure.log

2. 检查缺失的依赖
   # 根据错误信息安装对应的-devel包
   
3. 重新运行脚本
   # 选择较少的插件重试

4. 离线安装时
   # 确保所有依赖已手动安装

Q5: 如何切换在线/离线模式?

# 运行脚本后,在主菜单选择:

1. 全新安装PostgreSQL(在线)    # 在线模式
4. 离线安装PostgreSQL(tar包)    # 离线模式

Q6: 卸载前需要备份数据吗?

# 强烈建议备份!

# 备份所有数据库
/opt/postgresql/bin/pg_dumpall > backup.sql

# 或备份整个数据目录
tar -czf postgresql_backup.tar.gz /opt/postgresql/data

# 然后再运行卸载脚本
./uninstall_postgresql.sh

Q7: 如何在离线环境使用在线安装?

# 方法1:使用代理
export http_proxy=http://proxy.example.com:8080
./install_postgresql18.sh

# 方法2:手动下载源码后使用离线安装
wget https://ftp.postgresql.org/pub/source/v18.1/postgresql-18.1.tar.gz
./install_postgresql18.sh  # 选择选项 4

Q8: 如何查看启动服务命令?

# 进入路径查询service
cd /etc/systemd/system

# 根据查询的路径替换参数-当前脚本如果安装的是18则使用下面命令
systemctl restart postgresql18
systemctl status postgresql18
systemctl start postgresql18
systemctl stop postgresql18

⚠️ 注意事项

安装前

1. 必须使用 root 权限运行
2. 确保磁盘空间充足(建议 20GB+)
3. 端口 5432 确保未被占用
4. 离线安装需提前准备依赖

安全建议

1. 修改默认密码
2. 配置防火墙规则
3. 限制远程访问IP
4. 启用 SSL 加密
5. 定期备份数据

性能优化

1. 根据内存调整 shared_buffers
2. 根据CPU调整 max_worker_processes
3. 配置 effective_cache_size
4. 启用连接池(如PgBouncer)

📞 技术支持

查看日志

# PostgreSQL 日志
tail -f /mnt/data/postgresql/data/log/postgresql.log

# 系统服务日志
journalctl -u postgresql -xe

常用命令

# 服务管理
systemctl start postgresql      # 启动
systemctl stop postgresql       # 停止
systemctl restart postgresql    # 重启
systemctl status postgresql     # 状态

# 数据库连接
psql -U postgres -d postgres  # 连接
psql -l                    # 列出数据库

参考资源

PostgreSQL 官网: https://www.postgresql.org/
PostgreSQL 文档: https://www.postgresql.org/docs/
PostgreSQL 下载: https://www.postgresql.org/download/
腾讯云软件源   官网: https://mirrors.cloud.tencent.com
腾讯云源PostgreSQL  下载: https://mirrors.cloud.tencent.com/postgresql/source

👉如果你对本文内容感兴趣,关注公众号「伊诺无界」 ,回复关键词 [pgsql],[postgresql],即可获取:

  • 当前文章需要使用的资源
  • 查看了解往期文章