Docker容器下面操作MySQL指南

1、登录

1.1 查看MySQL容器的名称

docker ps

上图可见MySQL容器的名称为mysql

1.2 登录

docker exec -it mysql mysql -u root -p
  • docker exec Docker 命令,用于在正在运行的容器中执行命令。

  • -it

    • -i(交互模式):保持 STDIN 打开,允许你与容器内的进程交互。

    • -t(分配伪终端):为容器分配一个伪终端(TTY),使交互式操作更友好(如支持命令行编辑)。 通常这两个选项一起使用,以便你可以像在本地终端一样与容器内的程序交互。

  • mysql 目标容器的名称或 ID。这里假设你有一个名为 mysql 的正在运行的容器。

  • mysql -u root -p 在容器内执行的命令:

    • mysql:启动 MySQL 命令行客户端。

    • -u root:以用户 root 身份登录 MySQL。

    • -p:提示输入密码(执行后会要求你输入 MySQL 的 root 用户密码)。

2、查看

2.1 显示当前用户权限范围内的所有数据库

SHOW DATABASES;

2.2 全局查找

SELECT 
    TABLE_SCHEMA AS '数据库名',
    TABLE_NAME AS '表名'
FROM 
    information_schema.TABLES 
WHERE 
    TABLE_NAME LIKE '%business_attend_class_record%';

如图,查询结果表示business_attend_class_record 表存在于 classroom_evaluation_system 数据库中

2.3 进入数据库

USE classroom_evaluation_system;

2.4 查看表结构

DESCRIBE business_attend_class_record;

2.5 查询表数据

(1)查看前10条记录

SELECT * FROM business_attend_class_record LIMIT 10;

(2)按条件查询(示例)

-- 查询特定学生的考勤记录
SELECT * FROM business_attend_class_record 
WHERE student_id = '2023001';
​
-- 查询某课程的考勤统计
SELECT class_id, COUNT(*) AS attendance_count 
FROM business_attend_class_record 
GROUP BY class_id;

(3)查看完整数据(限制100条防止数据过大)

SELECT * FROM business_attend_class_record 
WHERE is_del = 0  -- 排除逻辑删除的记录
LIMIT 100;

(4)查看表注释和字段含义(关键!)

SHOW CREATE TABLE business_attend_class_record;

3、导出

3.1 导出为CSV

SELECT * INTO OUTFILE '/tmp/attendance_data.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM business_attend_class_record;

注意:需要MySQL有文件写入权限,或使用客户端工具导出

3.2 通过命令行导出

docker exec -i mysql_container \
mysql -u root -pEswinIbu@2030 classroom_evaluation_system \
-e "SELECT * FROM business_attend_class_record" > attendance_data.txt

4、备份

docker exec mysql_container \
mysqldump -u root -ptouch@2025 classroom_evaluation_system business_attend_class_record > attendance_backup.sql

这个命令用于从运行在 Docker 容器中的 MySQL 数据库导出特定表的备份。以下是详细解释:

  1. docker exec mysql_container

    • 在名为 mysql_container 的 Docker 容器中执行命令

  2. mysqldump

    • MySQL 官方提供的数据库备份工具

    • 用于导出数据库结构和数据

  3. -u root

    • 使用 MySQL 的 root 用户身份连接

  4. -ptouch@2025

    • 指定 MySQL root 用户的密码为 touch@2025

    • ⚠️ 注意:密码直接显示在命令中不安全(会保存在 shell 历史记录中)

  5. classroom_evaluation_system

    • 要备份的数据库名称

  6. business_attend_class_record

    • 要备份的特定表名

  7. > attendance_backup.sql

    • 将备份输出重定向到当前目录下的 attendance_backup.sql 文件

命令整体作用

将 Docker 容器 mysql_container 中 MySQL 数据库 classroom_evaluation_system 的表 business_attend_class_record 导出备份到宿主机的 attendance_backup.sql 文件

安全注意事项

  1. 密码暴露风险

    • 当前命令将密码明文显示,不安全

    • 更安全的方式:

      docker exec mysql_container \
      mysqldump -u root -p classroom_evaluation_system business_attend_class_record > attendance_backup.sql

      执行后会提示输入密码

  2. 备份文件权限

    • 确保生成的 attendance_backup.sql 文件有适当的访问权限

扩展用法

  1. 备份整个数据库

    docker exec mysql_container \
    mysqldump -u root -p classroom_evaluation_system > full_backup.sql

  2. 只备份表结构(不含数据)

    docker exec mysql_container \
    mysqldump -u root -p -d classroom_evaluation_system business_attend_class_record > structure_only.sql

  3. 压缩备份

    docker exec mysql_container \
    mysqldump -u root -p classroom_evaluation_system business_attend_class_record | gzip > attendance_backup.sql.gz

  4. 从备份恢复

    docker exec -i mysql_container \
    mysql -u root -p classroom_evaluation_system < attendance_backup.sql

    以上,是为记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值