PostgreSQL 数据库安装基于Dockers 以及APT 安装方法

PostgreSQL 数据库安装基于Dockers 以及APT 安装方法
28.7的博客PostgreSQL 安装与配置指南
本文详细介绍两种 PostgreSQL 主流部署方式(Docker Compose 快速部署与 Ubuntu apt 系统集成部署),涵盖远程连接配置、密码安全设置及 psql 命令行基础语法,步骤附带关键说明与操作截图,兼顾新手友好性与生产环境实用性。
目录
1. Docker Compose 部署(PostgreSQL 9.6)
通过 Docker 部署可跳过系统依赖安装,快速启动服务,且通过数据卷实现数据持久化(避免容器删除/重启导致数据丢失),适合测试环境或快速搭建场景。
1.1 编写 docker-compose.yml 配置文件
创建 docker-compose.yml 文件,定义镜像、容器参数、数据卷映射等核心配置:
1 | version: '3' |
1.2 启动服务与状态验证
前提条件
已安装 Docker 与 Docker Compose(安装命令参考:sudo apt install docker.io docker-compose)。
执行启动命令
1 | # 在 docker-compose.yml 所在目录执行,-d 表示后台运行容器 |
验证服务是否正常运行
1 | # 查看容器状态,若输出包含 "Up X minutes" 表示启动成功 |
1.3 远程连接注意事项
远程连接需满足「端口开放+参数正确」,否则会出现“连接超时”或“认证失败”:
远程连接核心步骤:
开放主机端口:确保部署 PostgreSQL 的主机防火墙开放 5432 端口:
- UFW 防火墙(Ubuntu 默认):
sudo ufw allow 5432/tcp && sudo ufw reload- firewalld 防火墙(CentOS):
sudo firewall-cmd --add-port=5432/tcp --permanent && sudo firewall-cmd --reload填写连接参数:远程工具(如 Navicat、DBeaver、DataGrip)需输入以下信息:
- 主机 IP:部署 PostgreSQL 的服务器公网/内网 IP
- 端口:5432(与配置文件中映射端口一致)
- 用户名:
root(配置文件中POSTGRES_USER定义)- 密码:
202019.Lv(配置文件中POSTGRES_PASSWORD定义)- 数据库名:
postgres(配置文件中POSTGRES_DB定义的初始数据库)
远程连接界面参考
图1:PostgreSQL 远程连接基本设置(以 Navicat 为例)
图2:PostgreSQL 远程连接高级参数配置(如超时时间、SSL 选项)
2. Ubuntu apt 部署(PostgreSQL 14)
通过 Ubuntu 官方 apt 源安装,可将 PostgreSQL 集成到系统服务,适合生产环境或需长期稳定运行的场景(默认自动开机启动)。
2.1 安装 PostgreSQL 服务
执行安装命令
1 | sudo apt-get update # 更新本地 apt 包索引,确保获取最新版本 |
安装后默认状态(关键信息)
- 自动创建系统用户
postgres(与 PostgreSQL 超级用户同名,无密码); - PostgreSQL 超级用户
postgres初始密码为空(需手动设置); - 服务默认启动,监听本地 5432 端口(仅允许本机访问,远程需配置)。
2.2 进入 PostgreSQL 命令行(psql)
psql 是 PostgreSQL 自带的命令行工具,需通过系统用户 postgres 进入(权限隔离机制):
1 | # 步骤1:切换到系统用户 postgres(无需密码,Ubuntu 权限机制) |
命令行界面参考
图3:通过 sudo -i -u postgres + psql 进入命令行界面
2.3 配置远程连接(允许外部访问)
默认仅允许本地访问,需修改两个核心配置文件(路径与版本相关),步骤如下:
步骤1:确定配置文件路径(关键!与版本绑定)
先查看 PostgreSQL 版本,确保后续路径正确:
1 | psql -V # 示例输出:psql (PostgreSQL) 14.9 → 版本号为 14 |
配置文件默认路径格式:/etc/postgresql/<版本号>/main/(本文版本为 14,路径为 /etc/postgresql/14/main/)。
版本查看参考:
图4:通过psql -V命令查看 PostgreSQL 版本
步骤2:修改 postgresql.conf(允许监听所有地址)
该文件控制服务网络监听配置,需开启“允许外部地址访问”:
1 | # 编辑配置文件(替换 14 为实际版本号) |
在 vim 中按 Esc + 输入 /listen_addresses 快速搜索配置项,修改为:
1 | # 原配置:listen_addresses = 'localhost' # 仅监听本地回环地址(127.0.0.1) |
保存退出:按 Esc → 输入 :wq → 按回车。
配置修改参考:
图5:修改postgresql.conf中的listen_addresses参数
步骤3:修改 pg_hba.conf(配置访问控制规则)
该文件控制“哪些主机、用户可以访问哪些数据库”,需将“本地认证”改为“密码认证”:
1 | # 编辑访问控制文件(替换 14 为实际版本号) |
找到 IPv4 和 IPv6 本地连接规则,替换为以下内容(关键是将 peer 改为 md5):
1 | # 1. 本地 Unix 套接字连接(默认配置,无需修改,适用于本机命令行) |
参数含义解释(避免误改):
列1 列2(数据库) 列3(用户) 列4(主机IP段) 列5(认证方式) local表示 Unix 套接字连接(仅本机) - - - host表示 TCP/IP 连接(远程访问需此类型) - - - all允许访问所有数据库 允许所有用户 - - 0.0.0.0/0所有 IPv4 地址(生产环境建议限制为具体网段,如 192.168.1.0/24) - - md5密码通过 MD5 加密传输(安全,替代 peer本地用户认证)- -
步骤4:重启服务使配置生效
修改配置后需重启服务,否则不生效:
1 | sudo systemctl restart postgresql # 重启 PostgreSQL 服务 |
服务状态验证参考:
图6:重启后通过systemctl status确认服务正常运行
2.4 修改超级用户(postgres)密码
初始密码为空,存在安全风险,需立即设置强密码:
1 | # 步骤1:进入 psql 命令行(参考 2.2 步骤) |
密码修改参考:
图7:在 psql 中执行ALTER USER命令修改超级用户密码
2.5 开放防火墙端口(远程连接必备)
Ubuntu 若启用 UFW 防火墙,需手动开放 5432 端口(否则远程工具无法连接):
1 | sudo ufw allow 5432/tcp # 允许 TCP 协议通过 5432 端口 |
兼容提示:若主机使用 firewalld(如 CentOS/RHEL),执行以下命令开放端口:
1
2 sudo firewall-cmd --add-port=5432/tcp --permanent # 永久开放端口
sudo firewall-cmd --reload # 重载规则使配置生效
3. PostgreSQL 基础语法(psql 命令行)
psql 支持两种命令:SQL 命令(需以分号结尾)和 psql 系统命令(以反斜杠 \ 开头,无需分号)。
3.1 进入与退出 psql
1 | # 方式1:分步操作(权限明确,推荐) |
3.2 常用基础命令(psql 系统命令)
| 命令 | 功能描述 | 示例 |
|---|---|---|
\l |
列出所有数据库 | postgres=# \l |
\c 数据库名 |
切换到指定数据库 | postgres=# \c test_db |
\d |
列出当前数据库的所有表/视图 | test_db=# \d |
\d 表名 |
查看指定表的结构(字段、类型、约束等) | test_db=# \d user_info |
\du |
列出所有用户(角色) | postgres=# \du |
\q |
退出 psql 命令行 | postgres=# \q |
\h |
查看 SQL 命令帮助(如 \h ALTER TABLE) |
postgres=# \h ALTER TABLE |
3.3 常用 SQL 命令(基础操作)
1 | -- 1. 创建数据库(示例:创建 test_db 数据库) |
常见问题排查提示
- 远程连接超时:检查主机防火墙是否开放 5432 端口、
listen_addresses是否设为*; - 认证失败:检查用户名/密码是否正确、
pg_hba.conf中认证方式是否为md5; - 服务启动失败:查看日志排查(日志路径:
/var/log/postgresql/postgresql-14-main.log,替换 14 为实际版本)。
以上为 PostgreSQL 两种部署方式的完整流程,可根据实际场景(测试/生产、快速搭建/系统集成)选择对应方案,配置时需注意密码安全与端口访问控制,避免暴露风险。









