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 数据库导出特定表的备份。以下是详细解释:
-
docker exec mysql_container
-
在名为
mysql_container
的 Docker 容器中执行命令
-
-
mysqldump
-
MySQL 官方提供的数据库备份工具
-
用于导出数据库结构和数据
-
-
-u root
-
使用 MySQL 的 root 用户身份连接
-
-
-ptouch@2025
-
指定 MySQL root 用户的密码为
touch@2025
-
⚠️ 注意:密码直接显示在命令中不安全(会保存在 shell 历史记录中)
-
-
classroom_evaluation_system
-
要备份的数据库名称
-
-
business_attend_class_record
-
要备份的特定表名
-
-
> attendance_backup.sql
-
将备份输出重定向到当前目录下的
attendance_backup.sql
文件
-
命令整体作用
将 Docker 容器 mysql_container
中 MySQL 数据库 classroom_evaluation_system
的表 business_attend_class_record
导出备份到宿主机的 attendance_backup.sql
文件
安全注意事项
-
密码暴露风险
-
当前命令将密码明文显示,不安全
-
更安全的方式:
docker exec mysql_container \ mysqldump -u root -p classroom_evaluation_system business_attend_class_record > attendance_backup.sql
执行后会提示输入密码
-
-
备份文件权限
-
确保生成的
attendance_backup.sql
文件有适当的访问权限
-
扩展用法
-
备份整个数据库
docker exec mysql_container \ mysqldump -u root -p classroom_evaluation_system > full_backup.sql
-
只备份表结构(不含数据)
docker exec mysql_container \ mysqldump -u root -p -d classroom_evaluation_system business_attend_class_record > structure_only.sql
-
压缩备份
docker exec mysql_container \ mysqldump -u root -p classroom_evaluation_system business_attend_class_record | gzip > attendance_backup.sql.gz
-
从备份恢复
docker exec -i mysql_container \ mysql -u root -p classroom_evaluation_system < attendance_backup.sql
以上,是为记。