在银河麒麟系统安装postgresql需按版本、架构和网络条件选择yum在线或源码编译方式;yum适用于v10/v11 x86_64联网环境,源码编译适配arm64、离线或高版本需求,二者均须正确初始化数据目录并配置远程访问。

在银河麒麟操作系统上安装PostgreSQL数据库,需根据系统版本(V10/V11)、网络连通性、CPU架构(x86_64或aarch64)及是否需要指定高版本(如v17/v18)来选择适配路径;直接套用CentOS或Ubuntu教程会导致包名错误、依赖缺失或服务启动失败。
YUM在线安装(推荐V10/V11服务器版且网络通畅)
该方式自动解析依赖、注册systemd服务、生成默认数据目录,适合快速部署测试环境或初次上手用户。
第一步:以root身份更新系统基础组件,避免因glibc或内核版本过旧导致后续安装中断:
sudo yum update -y
第二步:安装主服务与扩展模块,注意包名不含版本号或“-client”后缀:
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、离线环境或v17/v18等新版)
当YUM仓库中无目标版本、系统为aarch64架构报“package not found”、或内网完全断网时,必须走源码路径。此方式可控性强,但需手动处理用户权限、国产化依赖包名及初始化逻辑。
方法一:准备构建环境
先创建专用系统用户与组,避免后续权限冲突:
sudo groupadd postgres → sudo useradd -g postgres postgres → sudo passwd postgres
方法二:安装编译依赖(关键点:readline-devel在麒麟系统中实际为kylin-readline-devel)
sudo yum install -y gcc gcc-c++ zlib-devel openssl-devel libxml2-devel python3-devel
若提示readline-devel未找到,【请改用kylin-readline-devel,该包位于麒麟V10/V11 ISO镜像的“Addons”源中,需挂载ISO并启用对应repo】
方法三:下载、配置与安装
下载v18.1源码包:
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
配置安装路径并禁用readline(规避麒麟下兼容问题):
./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
配置远程访问(完成安装后必做)
默认仅监听本地,生产环境需开放远程连接,否则应用无法接入。
编辑postgresql.conf文件:
sudo vim /var/lib/pgsql/data/postgresql.conf
将listen_addresses = 'localhost' 改为 listen_addresses = '*'(若使用源码安装,路径为/usr/local/pgsql/data/postgresql.conf)
编辑pg_hba.conf文件:
sudo vim /var/lib/pgsql/data/pg_hba.conf
在末尾添加一行允许IPv4远程连接:
host all all 0.0.0.0/0 md5
重启服务使配置生效:
sudo systemctl restart postgresql
开放系统防火墙5432端口:
sudo firewall-cmd --permanent --add-port=5432/tcp → sudo firewall-cmd --reload











