本文针对Ubuntu服务器出现的PostgreSQL官方APT源超时、密钥冲突、404访问失败等网络异常问题,提供纯源码编译安装PostgreSQL 14完整解决方案,全程不依赖境外软件源,适配内网、网络受限环境,支持Ubuntu 20.04/22.04全系版本。教程涵盖编译依赖安装、源码编译、专用用户与数据目录配置、数据库初始化、全局环境变量配置、系统开机自启、远程连接放行等全流程操作。同时搭配systemd服务托管、防火墙端口放行等配置,解决源码安装命令无法全局调用、服务无法自启、外网无法连接等常见问题,步骤完整、可直接落地,适合生产环境部署使用。 源码安装优势:无源冲突、无密钥报错、版本纯净可控、完美适配内网/网络受限服务器。
一、安装编译依赖
sudo apt updatesudo apt install -y gcc make libreadline-dev zlib1g-dev libssl-dev pkg-config
依赖说明:gcc/make 用于编译,readline/zlib 为数据库核心依赖,ssl 支持加密连接
二、下载 PostgreSQL 14 源码包
使用国内镜像源码包,极速下载、无超时、可离线部署
# 进入临时目录cd /usr/local/src# 下载PostgreSQL14 稳定版源码sudo wget https://ftp.postgresql.org/pub/source/v14.23/postgresql-14.23.tar.gz# 解压源码包sudo tar -zxvf postgresql-14.23.tar.gzcd postgresql-14.23
三、编译配置 & 安装(核心步骤)
指定安装路径为 /usr/local/pgsql14(独立目录,不与系统冲突)
# 配置编译参数./configure --prefix=/usr/local/pgsql14 --with-openssl# 编译(耗时3-5分钟,多核服务器可加速:make -j4)make# 安装系统sudo make install
四、创建专用运行用户 & 数据目录
PostgreSQL 禁止root运行,需创建普通专用用户,配置数据存储目录
# 创建postgres系统用户sudo useradd -m postgres# 创建数据存放目录sudo mkdir -p /usr/local/pgsql14/data# 授权目录归属权sudo chown -R postgres:postgres /usr/local/pgsql14sudo chmod 700/usr/local/pgsql14/data
五、初始化数据库实例
# 切换postgres用户初始化数据库sudo -u postgres /usr/local/pgsql14/bin/initdb -D /usr/local/pgsql14/data -E UTF-8
出现 Success. You can now start the database server 即为初始化成功

六、配置系统环境变量(全局调用psql命令)
配置全局环境变量,任意目录可直接使用 psql、pg_ctl 等命令
# 编辑全局环境变量文件sudo vim /etc/profile
在文件末尾添加以下内容:
# PostgreSQL14 ENVexport PG_HOME=/usr/local/pgsql14export PATH=$PATH:$PG_HOME/binexport LD_LIBRARY_PATH=$PG_HOME/lib:$LD_LIBRARY_PATH
生效环境变量:
source /etc/profile
验证命令: psql--version,输出 14.23 即配置成功

七、配置系统自启服务(systemd 托管)
创建系统服务文件,实现开机自启、启停管理
sudo vim /etc/systemd/system/postgresql14.service
写入以下完整服务配置:
[Unit]Description=PostgreSQL14DatabaseServerAfter=network.target[Service]Type=forkingUser=postgresGroup=postgresExecStart=/usr/local/pgsql14/bin/pg_ctl start -D /usr/local/pgsql14/dataExecStop=/usr/local/pgsql14/bin/pg_ctl stop -D /usr/local/pgsql14/dataExecReload=/usr/local/pgsql14/bin/pg_ctl reload -D /usr/local/pgsql14/dataRestart=on-failure[Install]WantedBy=multi-user.target
八、启动服务 & 设置开机自启
# 重载系统服务sudo systemctl daemon-reload# 开机自启sudo systemctl enable postgresql14# 启动数据库sudo systemctl start postgresql14# 查看运行状态sudo systemctl status postgresql14
显示 active (running) 代表源码安装启动成功

九、设置超级管理员密码
# 进入数据库sudo -u postgres /usr/local/pgsql14/bin/psql# 设置密码(替换为自己的密码)ALTER USER postgres WITH PASSWORD '你的密码';# 退出\q

十、配置远程连接(源码版专属配置)
1. 修改监听地址
sudo vim /usr/local/pgsql14/data/postgresql.conf
修改参数:
listen_addresses ='*'port =5432
2. 放行远程认证
sudo vim /usr/local/pgsql14/data/pg_hba.conf
末尾添加:
host all all 0.0.0.0/0 md5
3. 重启生效 + 放行防火墙
sudo systemctl restart postgresql14sudo ufw allow 5432/tcpsudo ufw reload
十一、常用运维命令(源码版)
# 启动sudo systemctl start postgresql14# 停止sudo systemctl stop postgresql14# 重启sudo systemctl restart postgresql14# 状态sudo systemctl status postgresql14# 查看版本psql --version
十二、常见问题说明
1. 权限报错:确保 data 目录权限为700、归属postgres用户
2. 命令找不到:重新执行 source/etc/profile 生效环境变量
夜雨聆风