麒麟os安装postgresql需据网络、架构、版本选yum在线(v10/v11服务器版,自动依赖)、源码编译(arm64/高版本/离线)或docker部署;yum法须更新系统、装postgresql-server及contrib、初始化数据库、启服务并设自启;源码法需创建postgres用户、装gcc等依赖(注意kylin-readline-devel)、配置编译参数、初始化数据目录;远程访问需改postgresql.conf监听地址、pg_hba.conf认证规则并开放5432端口。

在银河麒麟操作系统(KylinOS)上安装并配置PostgreSQL数据库,需根据网络连通性、CPU架构(x86_64或aarch64)、版本需求及部署环境(生产/测试/离线)选择对应方式,不能直接套用CentOS或Ubuntu的通用流程,否则会因包名差异、依赖缺失或服务路径不一致导致初始化失败或服务无法启动。
YUM在线安装(适用于V10/V11服务器版且网络通畅)
该方式由系统自动解析依赖、注册服务、生成默认数据目录,适合初次部署或快速验证场景,但仅提供仓库中预编译的稳定版本(如V10默认含PostgreSQL 13,V11含15)。
第一步:以root身份更新系统,确保yum源与基础组件一致:
sudo yum update -y
第二步:安装主服务与常用扩展模块,注意包名不含“-client”或“-devel”后缀:
sudo yum install -y postgresql-server postgresql-contrib
第三步:初始化数据库集群目录——【此步不可跳过,V10/V11均需显式执行,否则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、指定高版本如v17/v18或离线定制)
当需要PostgreSQL 17.0以上版本、目标机器为aarch64架构、或内网无法访问公网源时,必须采用源码方式。此方法可控性强,但需手动处理用户、权限、路径与初始化逻辑。
方法一:准备构建环境
先创建专用系统用户与组,避免后续权限冲突:
sudo groupadd postgres
sudo useradd -g postgres postgres
sudo passwd postgres
PostgreSQL 18.4 官方 Ubuntu 安装包现已发布,这是目前最新的稳定版本。推荐通过官方 APT 仓库安装:先执行 sudo apt update 更新索引,再运行 sudo apt install postgresql-18 即可完成部署。新版本引入了异步 I/O 子系统,在顺序扫描与 VACUUM 场景下性能提升显著,同时支持 UUID v7 原生生成函数与虚拟生成列。
方法二:安装编译依赖(注意麒麟特有包名)
sudo yum install -y gcc gcc-c++ zlib-devel openssl-devel cmake
若提示readline-devel未找到,请改用【kylin-readline-devel】,该包存在于麒麟V10/V11 ISO镜像的“Addons”源中,需挂载后启用。
方法三:下载、配置与安装
wget https://ftp.postgresql.org/pub/source/v18.1/postgresql-18.1.tar.gz
tar -zxvf postgresql-18.1.tar.gz && cd postgresql-18.1
./configure --prefix=/usr/local/pgsql --with-openssl --without-readline
make -j$(nproc) && sudo make install
方法四:初始化数据目录并赋权
sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/data
sudo -i -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
配置远程访问与基础安全策略
默认安装仅监听本地回环地址,若需外部应用连接,必须修改两个配置文件并重启服务,否则客户端将报“connection refused”或“no pg_hba.conf entry”。
编辑postgresql.conf,放开监听地址与连接数限制:
sudo nano /var/lib/pgsql/data/postgresql.conf
将listen_addresses = 'localhost'改为listen_addresses = '*',并添加max_connections = 300
编辑pg_hba.conf,在末尾新增一行允许IPv4网段认证:
sudo nano /var/lib/pgsql/data/pg_hba.conf
host all all 0.0.0.0/0 md5
重启服务使配置生效:
sudo systemctl restart postgresql
开放防火墙端口(仅限需要远程访问时):
sudo firewall-cmd --permanent --add-port=5432/tcp → sudo firewall-cmd --reload
切换至postgres用户并修改默认密码:
sudo -i -u postgres psql -c "\password postgres"









