温馨提示×

如何编译安装CentOS的PostgreSQL

小樊
44
2026-07-09 17:38:58
栏目: 云计算

下面以 CentOS 7 / CentOS 8 为例,介绍 从源码编译安装 PostgreSQL 的完整流程。如果你只是想用官方仓库安装,我也可以给你 yum 方式。


一、准备编译环境

1. 安装依赖包

# CentOS 7
yum groupinstall -y "Development Tools"
yum install -y readline-devel zlib-devel bison flex \
               openssl-devel libxml2-devel libxslt-devel \
               systemd-devel wget

# CentOS 8
dnf groupinstall -y "Development Tools"
dnf install -y readline-devel zlib-devel bison flex \
               openssl-devel libxml2-devel libxslt-devel \
               systemd-devel wget

二、下载 PostgreSQL 源码

PostgreSQL 16 为例(可换成你需要的版本):

cd /usr/local/src
wget https://ftp.postgresql.org/pub/source/v16.2/postgresql-16.2.tar.gz
tar -zxvf postgresql-16.2.tar.gz
cd postgresql-16.2

三、编译与安装

1. 配置编译参数

./configure \
  --prefix=/usr/local/pgsql \
  --with-openssl \
  --with-systemd \
  --with-libxml \
  --with-libxslt

如果只需要基础功能,可简化为:

./configure --prefix=/usr/local/pgsql

2. 编译

make -j$(nproc)

3. 安装

make install

安装完成后,PostgreSQL 会被安装到:

/usr/local/pgsql

四、创建 PostgreSQL 用户

不建议使用 root 运行 PostgreSQL:

useradd -r -m -s /bin/bash postgres

五、初始化数据库

1. 创建数据目录

mkdir -p /usr/local/pgsql/data
chown -R postgres:postgres /usr/local/pgsql

2. 初始化数据库

su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

六、配置 PostgreSQL

1. 修改配置文件

vim /usr/local/pgsql/data/postgresql.conf

常用配置:

listen_addresses = '*'
port = 5432

2. 配置客户端访问

vim /usr/local/pgsql/data/pg_hba.conf

示例(允许本地密码登录):

local   all   all   md5
host    all   all   127.0.0.1/32   md5

七、启动 PostgreSQL

手动启动

su - postgres
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

停止

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop

八、配置 systemd 服务(推荐)

1. 创建服务文件

vim /etc/systemd/system/postgresql.service

内容示例:

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
ExecStop=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop
ExecReload=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data reload

[Install]
WantedBy=multi-user.target

2. 重载并启动

systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql

九、设置环境变量(可选)

vim /etc/profile.d/pgsql.sh
export PATH=/usr/local/pgsql/bin:$PATH

使生效:

source /etc/profile

十、验证安装

psql --version
su - postgres
psql

常见问题

1. configure 报错

  • 缺少 readline / zlib → 安装对应 -devel
  • CentOS 8 用 dnf 替代 yum

2. 端口被占用

ss -lntp | grep 5432

如果你愿意,我可以:

  • ✅ 给你 CentOS 7 / 8 的 yum 安装方式
  • ✅ 推荐 生产环境最优版本
  • ✅ 帮你配置 主从 / 流复制
  • ✅ 写成 一键安装脚本

只要告诉我你的 CentOS 版本和使用场景即可。

0