乐于分享
好东西不私藏

Ubuntu 源码编译安装 PostgreSQL 14 完整教程

Ubuntu 源码编译安装 PostgreSQL 14 完整教程

本文针对Ubuntu服务器出现的PostgreSQL官方APT源超时、密钥冲突、404访问失败等网络异常问题,提供纯源码编译安装PostgreSQL 14完整解决方案,全程不依赖境外软件源,适配内网、网络受限环境,支持Ubuntu 20.04/22.04全系版本。教程涵盖编译依赖安装、源码编译、专用用户与数据目录配置、数据库初始化、全局环境变量配置、系统开机自启、远程连接放行等全流程操作。同时搭配systemd服务托管、防火墙端口放行等配置,解决源码安装命令无法全局调用、服务无法自启、外网无法连接等常见问题,步骤完整、可直接落地,适合生产环境部署使用。 源码安装优势:无源冲突、无密钥报错、版本纯净可控、完美适配内网/网络受限服务器。

一、安装编译依赖

  1. sudo apt update
  2. sudo apt install -y gcc make libreadline-dev zlib1g-dev libssl-dev pkg-config

依赖说明:gcc/make 用于编译,readline/zlib 为数据库核心依赖,ssl 支持加密连接

二、下载 PostgreSQL 14 源码包

使用国内镜像源码包,极速下载、无超时、可离线部署

  1. # 进入临时目录
  2. cd /usr/local/src
  3. # 下载PostgreSQL14 稳定版源码
  4. sudo wget https://ftp.postgresql.org/pub/source/v14.23/postgresql-14.23.tar.gz
  5. # 解压源码包
  6. sudo tar -zxvf postgresql-14.23.tar.gz
  7. cd postgresql-14.23

三、编译配置 & 安装(核心步骤)

指定安装路径为 /usr/local/pgsql14(独立目录,不与系统冲突)

  1. # 配置编译参数
  2. ./configure --prefix=/usr/local/pgsql14 --with-openssl
  3. # 编译(耗时3-5分钟,多核服务器可加速:make -j4)
  4. make
  5. # 安装系统
  6. sudo make install

四、创建专用运行用户 & 数据目录

PostgreSQL 禁止root运行,需创建普通专用用户,配置数据存储目录

  1. # 创建postgres系统用户
  2. sudo useradd -m postgres
  3. # 创建数据存放目录
  4. sudo mkdir -/usr/local/pgsql14/data
  5. # 授权目录归属权
  6. sudo chown -R postgres:postgres /usr/local/pgsql14
  7. sudo chmod 700/usr/local/pgsql14/data

五、初始化数据库实例

  1. # 切换postgres用户初始化数据库
  2. sudo -u postgres /usr/local/pgsql14/bin/initdb -/usr/local/pgsql14/data -E UTF-8

出现 Success. You can now start the database server 即为初始化成功

六、配置系统环境变量(全局调用psql命令)

配置全局环境变量,任意目录可直接使用 psql、pg_ctl 等命令

  1. # 编辑全局环境变量文件
  2. sudo vim /etc/profile

在文件末尾添加以下内容:

  1. # PostgreSQL14 ENV
  2. export PG_HOME=/usr/local/pgsql14
  3. export PATH=$PATH:$PG_HOME/bin
  4. export LD_LIBRARY_PATH=$PG_HOME/lib:$LD_LIBRARY_PATH

生效环境变量:

  1. source /etc/profile

验证命令: psql--version,输出 14.23 即配置成功

七、配置系统自启服务(systemd 托管)

创建系统服务文件,实现开机自启、启停管理

  1. sudo vim /etc/systemd/system/postgresql14.service

写入以下完整服务配置:

  1. [Unit]
  2. Description=PostgreSQL14DatabaseServer
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. User=postgres
  7. Group=postgres
  8. ExecStart=/usr/local/pgsql14/bin/pg_ctl start -/usr/local/pgsql14/data
  9. ExecStop=/usr/local/pgsql14/bin/pg_ctl stop -/usr/local/pgsql14/data
  10. ExecReload=/usr/local/pgsql14/bin/pg_ctl reload -/usr/local/pgsql14/data
  11. Restart=on-failure
  12. [Install]
  13. WantedBy=multi-user.target

八、启动服务 & 设置开机自启

  1. # 重载系统服务
  2. sudo systemctl daemon-reload
  3. # 开机自启
  4. sudo systemctl enable postgresql14
  5. # 启动数据库
  6. sudo systemctl start postgresql14
  7. # 查看运行状态
  8. sudo systemctl status postgresql14

显示 active (running) 代表源码安装启动成功

九、设置超级管理员密码

  1. # 进入数据库
  2. sudo -u postgres /usr/local/pgsql14/bin/psql
  3. # 设置密码(替换为自己的密码)
  4. ALTER USER postgres WITH PASSWORD '你的密码';
  5. # 退出
  6. \q

十、配置远程连接(源码版专属配置)

1. 修改监听地址

  1. sudo vim /usr/local/pgsql14/data/postgresql.conf

修改参数:

  1. listen_addresses ='*'
  2. port =5432

2. 放行远程认证

  1. sudo vim /usr/local/pgsql14/data/pg_hba.conf

末尾添加:

  1. host    all             all             0.0.0.0/0            md5

3. 重启生效 + 放行防火墙

  1. sudo systemctl restart postgresql14
  2. sudo ufw allow 5432/tcp
  3. sudo ufw reload

十一、常用运维命令(源码版)

  1. # 启动
  2. sudo systemctl start postgresql14
  3. # 停止
  4. sudo systemctl stop postgresql14
  5. # 重启
  6. sudo systemctl restart postgresql14
  7. # 状态
  8. sudo systemctl status postgresql14
  9. # 查看版本
  10. psql --version

十二、常见问题说明

1. 权限报错:确保 data 目录权限为700、归属postgres用户

2. 命令找不到:重新执行 source/etc/profile 生效环境变量