麒麟系统部署postgresql常见问题源于路径不规范、缺专用用户或开发包,应按yum在线安装(推荐初学者)、源码编译(适配arm64)、docker容器化、readline-devel报错专项处理及初始化后必要配置五步解决。

如果您在麒麟操作系统上部署PostgreSQL数据库时遇到依赖缺失、用户权限错误或编译失败等问题,则很可能是由于安装路径不规范、未创建专用系统用户或缺少关键开发包所致。以下是解决此问题的步骤:
一、使用YUM在线安装(推荐初学者)
该方法适用于银河麒麟V10/V11服务器版,系统已配置有效软件源且网络连通,可自动解决依赖关系并完成服务注册。
1、以root身份执行系统更新,确保基础环境最新:
sudo yum update -y
2、安装PostgreSQL主程序及扩展组件:
sudo yum install -y postgresql-server postgresql-contrib
3、初始化数据库集群目录:
sudo postgresql-setup --initdb
4、启动服务并设置开机自启:
sudo systemctl start postgresql
sudo systemctl enable postgresql
5、验证服务状态与版本:
sudo systemctl status postgresql
psql --version
二、源码编译安装(适配ARM64等非标架构)
当YUM无法匹配目标版本(如PostgreSQL 17/18),或系统为ARM64架构导致预编译包不兼容时,需通过源码编译安装,可精确控制依赖与安装路径。
1、下载对应版本源码包(以v18.1为例):
wget https://ftp.postgresql.org/pub/source/v18.1/postgresql-18.1.tar.gz
2、解压并进入源码目录:
tar -zxvf postgresql-18.1.tar.gz
cd postgresql-18.1
3、安装编译依赖:
sudo yum install -y gcc gcc-c++ zlib-devel readline-devel openssl-devel
4、创建postgres用户与组:
sudo groupadd postgres
sudo useradd -g postgres postgres
sudo passwd postgres
5、配置编译参数并安装:
./configure --prefix=/usr/local/pgsql --with-openssl
make
sudo make install
6、创建数据目录并赋权:
sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/data
7、切换用户并初始化数据库:
sudo -i -u postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
三、Docker容器化部署(隔离环境快速启用)
该方式避免宿主机污染,适合测试、CI/CD或需多版本共存场景,依赖Docker运行时环境。
1、确认Docker已安装并运行:
sudo systemctl is-active docker
2、拉取官方PostgreSQL镜像(指定版本增强兼容性):
docker pull postgres:17-alpine
3、创建持久化数据卷与启动容器:
docker volume create pgsql_data_v17
docker run -d \
--name pgsql-17 \
-e POSTGRES_PASSWORD=your_secure_password \
-v pgsql_data_v17:/var/lib/postgresql/data \
-p 5432:5432 \
-d postgres:17-alpine
4、验证容器内服务状态:
docker exec -it pgsql-17 psql -U postgres -c "SELECT version();"
四、规避readline-devel报错专项处理
在ARM64麒麟V10 SP2等系统中,configure阶段常因readline-devel版本不匹配触发中断,此时应采用替代方案绕过该依赖。
1、检查当前readline安装状态:
rpm -qa | grep readline
2、若存在版本冲突或缺失,强制跳过readline支持:
./configure --prefix=/opt/app/pgsql-17.0 --without-readline
3、继续执行编译与安装:
make && sudo make install
4、注意:禁用readline后psql将失去命令行编辑功能(如方向键、历史回溯),建议仅在紧急部署且无交互需求时启用。
五、初始化后必要配置项
无论采用何种安装方式,首次启动前均需完成监听地址与访问控制配置,否则数据库仅限本地UNIX socket连接。
1、定位postgresql.conf文件(常见路径):
/var/lib/pgsql/data/postgresql.conf 或 /usr/local/pgsql/data/postgresql.conf
2、修改监听配置:
listen_addresses = '*'
port = 5432
3、编辑pg_hba.conf,在末尾添加客户端认证规则:
host all all 0.0.0.0/0 md5
4、重启服务使配置生效:
sudo systemctl restart postgresql
5、开放系统防火墙端口(如启用):
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload










