欢迎光临
我们一直在努力

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 官方仓库(PGDG)

    Ubuntu 默认源的 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 用户,进入 psql:

    sudo -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.conf

    sudo nano /etc/postgresql/16/main/postgresql.conf

    搜索 listen_addresses,取消注释并改为监听所有地址:

    listen_addresses = '*'

    6.2 改 pg_hba.conf

    sudo nano /etc/postgresql/16/main/pg_hba.conf

    在 # IPv4 local connections 段下方添加(按你的实际网段调整):

    # 类型 数据库 用户 地址 认证方式
    host all all 192.168.1.0/24 scram-sha-256

    认证方式说明

    • scram-sha-256:PG 10 引入、14 起默认的认证方式,基于 SCRAM 挑战响应,比 md5 安全得多,强烈推荐
    • md5:旧版兼容用,安全性较低
    • trust:免密,生产环境严禁

    生产环境不要把地址写成 0.0.0.0/0 对公网开放,应限定内网网段或跳板机 IP。

    6.3 重启服务生效

    reload 与 restart 的区别(重要)

    • listen_addresses 是 postmaster 级参数,修改后必须 restart,reload 无效——所以本步骤必须用 restart
    • pg_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 或图形工具连上库,部署完成。

    九、常见报错排查

    报错1:connection refused / 连接超时

    排查四件套(按顺序检查):

  • listen_addresses 是否改为 '*' 并重启
  • pg_hba.conf 是否放行了客户端 IP 段
  • UFW 防火墙是否放行 5432
  • 云安全组是否放行 5432(云服务器必查)
  • 报错2:password authentication failed for user

    原因:pg_hba.conf 里的认证方式与用户密码存储方式不匹配。

    — 检查用户密码加密方式
    \\password appuser
    — 或查看 pg_hba.conf 的 METHOD 列是否为 scram-sha-256

    改完 pg_hba.conf 必须 sudo systemctl reload postgresql 或 restart 重新加载。

    报错3:FATAL: database "xxx" does not exist

    连接时 -d 指定的库不存在。默认连接会找与用户同名的库,用 \\l 查看现有数据库,确认库名拼写。

    报错4:Unit postgresql.service could not be found

    未安装成功或版本号路径不对。确认 /etc/postgresql/16/main/ 目录存在,dpkg -l | grep postgresql 确认安装包。

    十、总结

    部署成功自检清单

    • psql –version 输出 16.x
    • systemctl 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

    赞(0)
    未经允许不得转载:171主机测评 » Ubuntu 安装 PostgreSQL 16 完整教程(2026):从仓库配置到远程连接
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址