在银河麒麟系统部署postgresql需据网络、cpu架构(x86_64/aarch64)、版本及安全策略选路径:yum在线安装适用于v10/v11且网络通,含自动依赖解析与服务注册;离线或arm64无预编译包时须源码编译,注意国产化依赖如kylin-readline-devel及禁用readline;docker方式适配离线与arm64,需提前导入aarch64镜像。

在银河麒麟操作系统上部署PostgreSQL数据库,需根据网络连通性、CPU架构(x86_64或aarch64)、版本需求(如16/17/18)及安全策略选择对应安装路径;离线环境不能直接yum install,ARM64架构可能因预编译包缺失导致postgresql-server安装失败,必须提前确认系统源配置与依赖可用性。
YUM在线安装(适用于V10/V11服务器版且网络畅通)
该方式由系统自动解析依赖、注册服务单元并初始化默认数据目录,适合快速验证或测试环境部署。
第一步:以root身份更新系统基础组件,避免因内核或glibc版本过旧引发后续安装中断:
sudo yum update -y
第二步:安装主服务程序与常用扩展模块,注意包名不含版本号(如postgresql-server而非postgresql15-server):
sudo yum install -y postgresql-server postgresql-contrib
第三步:执行数据库集群初始化——【此步不可跳过,否则systemctl start会报错“data directory not found”】:
sudo postgresql-setup --initdb
第四步:启动服务并设为开机自启:
sudo systemctl start postgresql → sudo systemctl enable postgresql
第五步:验证服务运行状态与客户端版本是否匹配:
sudo systemctl status postgresql | grep "active (running)" && psql --version
源码编译安装(适配ARM64架构或指定高版本)
当YUM仓库中无目标版本(如PostgreSQL 18.1),或系统为aarch64架构且预编译包报“not found”错误时,必须采用源码方式。此路径可绕过架构限制,但需手动创建用户、授权目录并处理readline-devel等国产化适配包名差异。
方法一:基础编译流程(含国产化适配)
下载v18.1源码包:
wget https://ftp.postgresql.org/pub/source/v18.1/postgresql-18.1.tar.gz
PostgreSQL 18.4 官方 Ubuntu 安装包现已发布,这是目前最新的稳定版本。推荐通过官方 APT 仓库安装:先执行 sudo apt update 更新索引,再运行 sudo apt install postgresql-18 即可完成部署。新版本引入了异步 I/O 子系统,在顺序扫描与 VACUUM 场景下性能提升显著,同时支持 UUID v7 原生生成函数与虚拟生成列。
解压并进入源码目录:
tar -zxvf postgresql-18.1.tar.gz → cd postgresql-18.1
安装编译依赖——若提示readline-devel未找到,【请改用kylin-readline-devel或挂载麒麟ISO镜像中的base源安装】:
sudo yum install -y gcc gcc-c++ zlib-devel openssl-devel libxml2-devel python3-devel kylin-readline-devel
创建专用postgres用户与组(权限隔离必需):
sudo groupadd postgres → sudo useradd -g postgres postgres → sudo passwd postgres
配置安装路径并禁用冲突模块(ARM64平台建议关闭readline以规避编译报错):
./configure --prefix=/usr/local/pgsql --with-openssl --without-readline
编译并安装(利用全部CPU核心加速):
make -j$(nproc) → sudo make install
创建数据目录并赋权:
sudo mkdir -p /usr/local/pgsql/data → sudo chown -R postgres:postgres /usr/local/pgsql/data
切换至postgres用户执行初始化:
sudo -i -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
Docker容器化部署(适用于离线或需环境隔离场景)
该方式完全规避系统级依赖冲突,尤其适合ARM64平台快速拉起验证实例,镜像需提前在联网环境下载并导入。
导入已适配aarch64的PostgreSQL镜像(如官方arm64v8/postgres或麒麟认证镜像):
docker load
创建持久化数据目录(避免容器删除后数据丢失):
mkdir -p /opt/docker/postgresql/data
运行容器并绑定端口、挂载数据卷与设置初始密码:
docker run -d --name pgsql -e POSTGRES_PASSWORD=kylin123 -p 5432:5432 -v /opt/docker/postgresql/data:/var/lib/postgresql/data -d arm64v8/postgres:16









