夏夏子的博客 夏夏子的博客
首页
  • 影视
  • 影视工具
  • 常用工具
  • AI工具
  • 其它
电脑技巧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 影视
  • 影视工具
  • 常用工具
  • AI工具
  • 其它
电脑技巧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 影视

  • 影视工具

  • 常用工具

    • vaultwarden密码管理器
    • dockercopilot容器管理
    • 青龙面板
    • qiandao框架
    • navnetic导航页
    • webssh
    • easyimage图床
    • DDNS-GO
    • NPM
    • lucky
    • 微信代理
    • 端口查看
    • rustdesk
    • 数据库
      • 基础知识
      • MySQL
        • docker-compose
        • 连接数据库
      • PostgreSQL
        • docker-compose
        • psql
        • 连接数据库
        • 创建数据库用户
        • 创建数据库
        • 数据导出
        • 数据导入
      • redis缓存
    • ezBookkeeping个人记账
    • v2raya
  • 其它

  • NAS玩法
  • 常用工具
夏夏子
2026-01-26
目录

数据库

一般来说我们的容器大部分都需要使用数据库,只是一些比较简单的容器使用的是内置的SQLite,但是如果是比较复杂一点的容器会改成其他数据库的比如 MySQL或PostgreSQL。

今天我们就来了解了解这些数据库。

# 基础知识

1.SQLite/ MySQL/PostgreSQL

它们都是关系型数据库体系,用于管理数据的存储、查询和权限控制。

  • MySQL / PostgreSQL:服务型数据库(需要独立数据库服务)
  • SQLite:嵌入式数据库(数据通常存为本地文件)

2.数据库(Database)

  • 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。一个数据库里面可以包含多张数据表。
  • 一个数据库服务中通常可以创建多个数据库。
  • 可类比为 Excel 工作簿。

3.数据表(Table)

  • 数据表是数据库中真正存放数据的结构,按“行 + 列”组织。
  • 一个数据库里可以有多张表。
  • 可类比为 Excel 工作表。

4.常见使用方式

  • 通过 SQL 语句 操作(增删改查)
  • 通过图形化工具操作,如:Navicat

Navicat Premium Lite (opens new window) 是 Navicat 的精简版,最多可使用5个Navicat Premium Lite免费用户账户,对于没有太高需求的用户来说可以使用它。

# MySQL

# docker-compose

services:
  mysql:
    image: mysql:latest
    container_name: mysql
    restart: always
    ports:
      - 3306:3306
    volumes:
      - ./log:/var/log/mysql            # 映射日志目录
      - ./data:/var/lib/mysql           # 映射数据目录
    environment:
      - MYSQL_ROOT_PASSWORD=mysql123456  # root用户密码
      - TZ=Asia/Shanghai            # 设置容器时区,也可以挂载通过/etc/localtime:/etc/localtime:ro
1
2
3
4
5
6
7
8
9
10
11
12
13

# 连接数据库

连接命令:mysql -u 用户名 -p -h 远程主机IP -P 端口号

注意:-p(小写)表示的是密码,-P(大写)表示的是端口

# 用默认root 用户连接
mysql -u root -p

# 连接 192.168.31.15 上端口为13306的 test_db 数据库,用户名 test_user
mysql -u test_user -p -h 192.168.31.15 -P 13306 -D test_db

1
2
3
4
5
6

连接类参数:用于指定连接的用户、主机、端口、密码等核心信息,是使用mysql命令的基础。

短参数 长参数 说明 示例
-u --user=用户名 指定连接MySQL的用户名 mysql -u root
mysql --user=root
-p --password[=密码] 指定密码(推荐不加密码,回车后输入更安全) 安全写法回车输密码:mysql -u root -p
不推荐密码明文暴露:mysql -u root -p123456
-h --host=主机IP 指定连接的 MySQL 服务器地址(本地默认 127.0.0.1) 远程连接:mysql -u test -p -h 192.168.1.100
-P --port=端口号 指定 MySQL 服务的端口(默认3306) 连接 3307 端口: mysql -u root -p -P 3307
-D --database=库名 连接后直接切换到指定数据库(无需再执行USE) 连接后直接进入 test_db 库: mysql -u root -p -D test_db
--protocol=协议 指定连接协议(tcp/udp/socket 等) 强制 TCP 连接: mysql -u root -p --protocol=tcp

连接成功后的基础操作:

# 查看 MySQL 系统状态(版本、连接数等)
STATUS; 
\s

# 查看当前 bind_address 配置,如果只为127.0.0.1表示仅允许本地回环连接,远程主机无法访问
SHOW VARIABLES LIKE 'bind_address';


# 查看当前连接的数据库,若返回 NULL,说明未选中任何库,需执行 USE 数据库名 切换
SELECT DATABASE();


# 列出所有用户
SELECT user, host FROM mysql.user;

# 列出所有数据库
SHOW DATABASES;


# 列出当前库的所有表
SHOW TABLES;

# 切换数据库
USE 库名;
\u 数据库名

# 查看表结构(字段 / 类型 / 约束)
DESC 表名; 
DESCRIBE 表名;

# 退出 MySQL 交互界面
\q
exit
quit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

img

# PostgreSQL

# docker-compose

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

# psql

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

常见参数:

参数 全称 作用
-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 数据库名

# 用默认 postgres 用户连接默认 postgres 数据库
psql -U postgres

# 连接 192.168.31.15 上端口为15432的 newapi 数据库,用户名 postgres
psql -U postgres -h 192.168.31.15 -p 15432 -d newapi
1
2
3
4
5

连接成功后的基础操作:

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


# 列出所有用户
\du
SELECT usename FROM pg_user;

# 列出所有数据库
\l
SELECT datname FROM pg_database;


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

# 切换数据库
\c 数据库名

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

# 退出 psql 交互界面
\q
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

img

# 创建数据库用户

创建名为 testdbuser 的数据库用户,并设置密码为 test888。

# 命令行模式(无需进入psql,直接在系统终端执行)
psql -U postgres -c 'CREATE USER testdbuser WITH LOGIN PASSWORD "test888";'

# psql交互模式
CREATE USER testdbuser WITH LOGIN PASSWORD 'test888';
1
2
3
4
5

# 创建数据库

创建名为 testdb、所有者为 testdbuser 的数据库。

# 命令行模式(无需进入psql,直接在系统终端执行)
psql -U postgres -c 'CREATE DATABASE testdb OWNER testdbuser;'

# psql交互模式
CREATE DATABASE testdb OWNER testdbuser;
1
2
3
4
5

# 数据导出

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

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

# 只导出数据
pg_dump -U postgres -d 库名 --data-only -f xxxx.sql
1
2
3
4
5
参数 作用
-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 格式、目录格式)导出的备份文件。
  1. 导入前需确保目标数据库已创建(比如 testdb 需先执行 psql -U admin -c "CREATE DATABASE testdb;");
# SQL 文件
psql -U admin -h 127.0.0.1 -p 5432 -d testdb -f /tmp/testdb_full.sql

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

1
2
3
4
5
6

# redis缓存

compose:

services:
  redis:
    image: redis:latest
    container_name: redis
    restart: always
    ports:
        - 6379:6379
    volumes:
        - ./data:/data
    command: redis-server --appendonly yes --requirepass yourpassword
1
2
3
4
5
6
7
8
9
10
上次更新: 2026/03/14, 16:23:09
rustdesk
ezBookkeeping个人记账

← rustdesk ezBookkeeping个人记账→

最近更新
01
v2raya
04-05
02
github项目更新通知
03-05
03
win终端命令
03-05
更多文章>
Theme by Vdoing | Copyright © 2025-2026 夏夏子 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式