返回列表 发布新帖

[玩法教程] 容器数据库入门之PostgreSQL实战

719 3
发表于 2026-3-3 11:16:38 | 查看全部 阅读模式 IP:–广东–佛山–高明区

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 夏夏子 于 2026-3-3 15:53 编辑

在上一篇容器数据库入门之MySQL实战 里说了下数据库基础知识与MySQL的部署与使用。现在我们继续来PostgreSQL数据库的部署与使用

docker部署

  1. services:
  2.   pgsql:
  3.     image: postgres:17-alpine # 这里指定了版本号
  4.     container_name: pgsql
  5.     restart: unless-stopped
  6.     network_mode: bridge
  7.     ports:
  8.       - 5432:5432
  9.     volumes:
  10.         - ./data:/var/lib/postgresql/data
  11.     environment:
  12.         POSTGRES_USER: postgres  # 默认管理员用户
  13.         POSTGRES_PASSWORD: postgres1234 # 默认管理员用户密码
  14.         POSTGRESQL_WAL_COMPRESSION: lz4  # WAL 日志的压缩方式设置为 lz4
  15.         POSTGRESQL_MAX_CONNECTIONS: 2048   # 数据库允许的最大连接数
复制代码

psql

psql 是 PostgreSQL官方自带的命令行交互式客户端工具。

常见参数:
参数
全称
作用
-U <用户名>
User
指定连接 PG 的用户名(默认系统当前用户名)
-h <地址>
Host
指定 PG 服务器地址(默认 127.0.0.1)
-p <端口>
Port
指定 PG 端口(默认 5432)
-d <库名>
Database
指定要连接的数据库名,不指定会默认尝试连接和「当前登录用户名同名」的数据库
-c
Command
非交互执行指定 SQL 语句,执行后立即退出(适合脚本)
-f <文件>
File
执行指定 SQL 文件中的所有语句(常用于导入备份、执行脚本)
-V
Version
查看 psql 版本

连接数据库

连接命令:psql -U 用户名 -h 地址 -p 端口 -d 数据库名
  1. # 用默认 postgres 用户连接默认 postgres 数据库
  2. psql -U postgres

  3. # 连接 192.168.31.15 上端口为15432的 newapi 数据库,用户名 postgres
  4. psql -U postgres -h 192.168.31.15 -p 15432 -d newapi
复制代码

连接成功后的基础操作

  1. # 查看当前连接的数据库
  2. SELECT current_database();

  3. # 列出所有用户
  4. \du
  5. SELECT usename FROM pg_user;

  6. # 列出所有数据库
  7. \l
  8. SELECT datname FROM pg_database;

  9. # 列出当前库的所有表
  10. \dt
  11. SELECT tablename FROM pg_tables;

  12. # 切换数据库
  13. \c 数据库名

  14. # 查看表结构(字段 / 类型 / 约束)
  15. \d 表名

  16. # 退出 psql 交互界面
  17. \q
复制代码

pgsql-01.png

创建数据库用户

创建名为 testdbuser 的数据库用户,并设置密码为 test888。
  1. # 命令行模式(无需进入psql,直接在系统终端执行)
  2. psql -U postgres -c 'CREATE USER testdbuser WITH LOGIN PASSWORD "test888";'

  3. # psql交互模式
  4. CREATE USER testdbuser WITH LOGIN PASSWORD 'test888';
复制代码


创建数据库


创建名为 testdb、所有者为 testdbuser 的数据库。
  1. # 命令行模式(无需进入psql,直接在系统终端执行)
  2. psql -U postgres -c 'CREATE DATABASE testdb OWNER testdbuser;'

  3. # psql交互模式
  4. CREATE DATABASE testdb OWNER testdbuser;
复制代码

数据导出
pg_dump:PostgreSQL 自带的备份工具,专门用来导出数据库的结构/数据。最小有效命令:pg_dump -U 用户名 -d 数据库名 -f 备份文件路径

  1. # 导出所有数据库结构 + 数据
  2. pg_dump -U postgres -d 库名 -f xxxx.sql

  3. # 只导出数据
  4. pg_dump -U postgres -d 库名 --data-only -f xxxx.sql
复制代码

参数
作用
-U
指定数据库用户名
-d
指定数据库名,必填
-f
指定导出文件名
-h
指定数据库服务器地址(默认本地 127.0.0.1)
-p
指定数据库端口(默认 5432),端口修改过必用
-t
表名。只导出指定单张表的结构 + 数据,避免全库导出)
-n
模式名。导出指定 Schema(PG 的逻辑分组,默认 public)的内容
-c
导出的 SQL 中添加「先删除表 / 数据」的语句(导入时自动清理旧数据)
-C
导出的 SQL 中添加「创建数据库」的语句(导入时无需提前建库)
-F c
导出为二进制格式(比 SQL 小、导入更快,后缀建议 .dump)
--data-only
只导出数据(不含结构)
--schema-only
只导出表结构(不含数据)


数据导入
注意:
1. 只有用  pg_dump -F c/-F t/-F d 导出的备份,才能用 pg_restore 恢复;纯 SQL 文件只能用 psql 导入;
  • pg_restore是PostgreSQL 自带的恢复工具,专门用于恢复由 pg_dump 以「非纯文本格式」(如自定义格式、tar 格式、目录格式)导出的备份文件。
2. 导入前需确保目标数据库已创建(比如 `testdb` 需先执行 psql -U admin -c "CREATE DATABASE testdb;");

  1. # SQL 文件
  2. psql -U admin -h 127.0.0.1 -p 5432 -d testdb -f /tmp/testdb_full.sql

  3. # 导入二进制备份文件
  4. pg_restore -U admin -d testdb -v /tmp/testdb.dump
复制代码







评论3

playokLv.4 发表于 2026-3-5 18:46:39 | 查看全部 IP:–贵州–遵义
mysql、postgresql、redis这几个常用,我都部署了,有需要连数据库的,直接使用他们。
夏夏子楼主Lv.7绿联NAS社区会员用户 发表于 2026-3-6 10:12:01 | 查看全部 IP:–广东–佛山–高明区
playok 发表于 2026-3-5 18:46
mysql、postgresql、redis这几个常用,我都部署了,有需要连数据库的,直接使用他们。 ...

数据库还是sqlite和mysql、pgsql用的多,不过sqlite一般不需要额外部署了,所以也就mysql和postgresql了。redis另当别论了。
梦梦Lv.7绿联NAS社区会员用户 发表于 2026-3-7 15:02:12 来自手机 | 查看全部 IP:–河北–衡水
很牛的教程

评论

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2026 绿联NAS私有云社区 版权所有 All Rights Reserved. 粤公网安备44030002002555号| 粤ICP备12028978号
关灯 在本版发帖
联系技术支持
返回顶部
快速回复 返回顶部 返回列表