温馨提示×

CentOS如何编译安装PostgreSQL

小樊
40
2026-08-20 03:57:30
栏目: 云计算

下面以 CentOS 7 / CentOS 8 为例,详细说明 从源码编译安装 PostgreSQL 的完整流程(以 PostgreSQL 16 为例,其他版本类似)。


一、准备编译环境

1. 安装依赖包

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

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

二、下载 PostgreSQL 源码

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

可到官网查看最新版本:
https://www.postgresql.org/ftp/source/


三、编译安装 PostgreSQL

1. 配置编译参数

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

常见参数说明:

参数 说明
–prefix 安装目录
–with-openssl 启用 SSL
–with-readline 支持命令行历史
–with-zlib 压缩支持
–with-libxml XML 支持

2. 编译并安装

make -j$(nproc)
make install

安装完成后,二进制文件位于:

/usr/local/pgsql/bin

四、创建 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. 启动数据库

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

2. 停止数据库

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

七、配置环境变量(推荐)

编辑 /etc/profile~/.bashrc

export PATH=/usr/local/pgsql/bin:$PATH
export PGDATA=/usr/local/pgsql/data

生效:

source /etc/profile

八、配置 systemd(CentOS 7/8)

1. 创建服务文件

vim /etc/systemd/system/postgresql.service

内容如下:

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

[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGDATA=/usr/local/pgsql/data
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA}
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA}
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA}
Restart=on-failure

[Install]
WantedBy=multi-user.target

2. 启动并设置开机自启

systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql
systemctl status postgresql

九、允许远程访问(可选)

1. 修改 postgresql.conf

vim /usr/local/pgsql/data/postgresql.conf
listen_addresses = '*'
port = 5432

2. 修改 pg_hba.conf

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

添加:

host  all  all  0.0.0.0/0  md5

3. 重启 PostgreSQL

systemctl restart postgresql

十、验证安装

psql --version
su - postgres
psql

常见问题

1. configure 报错

✅ 缺少依赖,根据提示安装对应 -devel 包即可。

2. 端口被占用

netstat -tunlp | grep 5432

如果你需要:

  • 指定版本(如 PG 14 / 15)
  • 编译插件(如 pg_stat_statements、uuid-ossp)
  • 与已有 yum 安装共存
  • CentOS Stream 9

可以继续告诉我,我可以给你定制方案。

0