Ubuntu 安装 PostgreSQL 16 完整教程(2026):从仓库配置到远程连接

📅 2026/8/9 9:50:38
Ubuntu 安装 PostgreSQL 16 完整教程(2026):从仓库配置到远程连接
环境Ubuntu 22.04 / 24.04 LTS |版本PostgreSQL 16 |适用生产/测试环境部署网上很多 PostgreSQL 安装教程要么版本太旧、要么直接用apt install postgresql装系统源自带的旧版本生产环境不推荐。本文使用 PostgreSQL官方仓库PGDG安装最新稳定版所有命令可直接复制执行。目录环境准备添加官方仓库安装 PostgreSQL服务管理设置密码与建库建用户开启远程访问postgresql.conf pg_hba.conf防火墙放行连接验证常见报错排查一、环境准备# 查看 Ubuntu 版本确认 codename lsb_release -a # 更新系统 sudo apt update sudo apt upgrade -y # 安装依赖 sudo apt install -y curl ca-certificates gnupg lsb-release二、添加 PostgreSQL 官方仓库PGDGUbuntu 默认源的 PostgreSQL 版本较旧官方仓库提供最新稳定版及安全更新。# 1. 创建密钥目录 sudo install -d /usr/share/postgresql-common/pgdg # 2. 下载官方 GPG 密钥 sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail \ https://www.postgresql.org/media/keys/ACCC4CF8.asc # 3. 写入仓库源自动识别系统 codename sudo sh -c echo deb [signed-by/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main /etc/apt/sources.list.d/pgdg.list # 4. 刷新软件源 sudo apt update这一步很关键。如果不加官方仓库apt install postgresql装的是系统源里的旧版本通常是 PG 14 或更早缺少新特性与安全补丁。三、安装 PostgreSQL 16# 安装 PostgreSQL 16长期支持版 sudo apt -y install postgresql-16 # 验证版本 psql --version # 输出示例psql (PostgreSQL) 16.x安装过程会自动完成创建postgres系统用户创建postgres数据库超级管理员初始化数据目录/var/lib/postgresql/16/main/启动服务四、服务管理sudo systemctl start postgresql # 启动 sudo systemctl stop postgresql # 停止 sudo systemctl restart postgresql # 重启 sudo systemctl enable postgresql # 开机自启 sudo systemctl status postgresql # 查看状态看到Active: active (running)表示正常运行。五、设置密码与建库建用户切换到 postgres 用户进入 psqlsudo -i -u postgres psql执行 SQL-- 1. 给超管设密码 ALTER USER postgres WITH PASSWORD YourStrongPass_2026; -- 2. 创建业务用户 CREATE USER appuser WITH PASSWORD AppUserPass_2026; -- 3. 创建数据库并指定属主 CREATE DATABASE appdb OWNER appuser; -- 4. 授权数据库级权限 GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser; -- 5. 授权 schema 权限关键否则用户连进去无法在 public 下建表PG 15 尤其注意 GRANT ALL ON SCHEMA public TO appuser; -- 6. 查看数据库列表 \l -- 7. 退出 \q注意示例密码仅作演示生产环境务必使用 12 位以上强密码字母数字符号组合。六、开启远程访问默认 PostgreSQL 只监听 127.0.0.1无法远程连接。需改两个文件。6.1 改 postgresql.confsudo nano /etc/postgresql/16/main/postgresql.conf搜索listen_addresses取消注释并改为监听所有地址listen_addresses *6.2 改 pg_hba.confsudo nano /etc/postgresql/16/main/pg_hba.conf在# IPv4 local connections段下方添加按你的实际网段调整# 类型 数据库 用户 地址 认证方式 host all all 192.168.1.0/24 scram-sha-256认证方式说明scram-sha-256PG 10 引入、14 起默认的认证方式基于 SCRAM 挑战响应比 md5 安全得多强烈推荐md5旧版兼容用安全性较低trust免密生产环境严禁生产环境不要把地址写成0.0.0.0/0对公网开放应限定内网网段或跳板机 IP。6.3 重启服务生效reload 与 restart 的区别重要listen_addresses是 postmaster 级参数修改后必须 restartreload 无效——所以本步骤必须用 restartpg_hba.conf修改只需重载不中断现有连接sudo systemctl reload postgresql或 psql 里SELECT pg_reload_conf();本文同时改了postgresql.conf和pg_hba.conf故用 restart 一次让两者都生效# 因 listen_addresses 必须 restart这里用 restart 一次性让两项配置都生效 sudo systemctl restart postgresql七、防火墙放行# UFW 防火墙放行 5432 sudo ufw allow 5432/tcp sudo ufw status云服务器额外步骤阿里云/腾讯云/华为云等还需在云控制台 → 安全组中添加入站规则放行 TCP 5432 端口。这是新手最常遗漏的一步导致本地配置都对却连不上。八、连接验证在另一台机器上测试连接# 命令行 psql -h 服务器IP -p 5432 -U appuser -d appdb # 或用图形工具DBeaver / pgAdmin / Navicat # 主机服务器IP 端口5432 用户appuser 数据库appdb成功进入 psql 或图形工具连上库部署完成。九、常见报错排查报错1connection refused / 连接超时排查四件套按顺序检查listen_addresses是否改为*并重启pg_hba.conf是否放行了客户端 IP 段UFW 防火墙是否放行 5432云安全组是否放行 5432云服务器必查报错2password authentication failed for user原因pg_hba.conf里的认证方式与用户密码存储方式不匹配。-- 检查用户密码加密方式 \password appuser -- 或查看 pg_hba.conf 的 METHOD 列是否为 scram-sha-256改完pg_hba.conf必须sudo systemctl reload postgresql或 restart 重新加载。报错3FATAL: database xxx does not exist连接时-d指定的库不存在。默认连接会找与用户同名的库用\l查看现有数据库确认库名拼写。报错4Unit postgresql.service could not be found未安装成功或版本号路径不对。确认/etc/postgresql/16/main/目录存在dpkg -l | grep postgresql确认安装包。十、总结部署成功自检清单psql --version输出 16.xsystemctl status postgresql显示 active (running)postgres 超管已设强密码业务库 appdb 用户 appuser 已建并授权如需远程远程机器能成功连接本篇覆盖了 Ubuntu 上 PostgreSQL 的完整部署。后续会更新主从流复制、pg_dump 备份恢复、慢查询优化、Patroni 高可用等进阶实战欢迎关注专栏。觉得有用就点个赞收藏吧部署时回来对着抄就行。本文关键词Ubuntu安装PostgreSQL、PostgreSQL16安装、PG部署、pg_hba.conf配置、远程连接、数据库安装教程、scram-sha-256参考PostgreSQL官方文档 postgresql.org/docs PGCCC pgccc.com.cn