第18周 数据库安全管理与综合复习
第18周 · 数据库安全管理与综合复习
最后一周,两件事:数据安全(备份还原、用户权限)和全书串讲(把 18 周知识收成一张地图,迎接期末与 3+证书考试)。
一、知识点:为什么重视数据安全
数据库坏了、误删了、被越权改了——都可能造成无法挽回的损失。两道防线:备份还原(出事能恢复)+ 权限管理(出事之前就防住)。
二、操作教程:备份(mysqldump)
mysqldump 是逻辑备份命令,在系统命令行(cmd/终端)执行,不是 mysql> 里:
:: 备份整个 school 库到一个 .sql 文件
mysqldump -u root -p school > D:/backup/school.sql
:: 备份所有库
mysqldump -u root -p --all-databases > D:/backup/all.sql
图形化工具(Workbench / Navicat)的"导出/转储"本质也是调 mysqldump,点点点即可。
三、操作教程:还原(SOURCE / 导入)
-- 方法一:在 mysql> 里用 SOURCE(先建库并切换)
CREATE DATABASE school CHARACTER SET utf8mb4;
USE school;
SOURCE D:/backup/school.sql;
-- 方法二:系统命令行直接导入
mysql -u root -p school < D:/backup/school.sql
备份文件就是一串 SQL 文本,可编辑、可迁移,这就是"逻辑备份"的好处。
四、操作教程:用户管理
-- 创建用户(localhost 表示仅本机可连)
CREATE USER 'stu'@'localhost' IDENTIFIED BY '123456';
-- 修改密码
ALTER USER 'stu'@'localhost' IDENTIFIED BY 'NewPass@123';
-- 删除用户
DROP USER 'stu'@'localhost';
'用户'@'主机'是一个整体;'stu'@'localhost'与'stu'@'%'是两个不同账号。
五、操作教程:权限授予与回收(GRANT / REVOKE)
权限粒度从粗到细:全局 → 库 → 表 → 列。
-- 只给 stu 在 school 库上的查询权限
GRANT SELECT ON school.* TO 'stu'@'localhost';
-- 回收(即使没授予过,也可示范回收语法)
REVOKE DELETE ON school.* FROM 'stu'@'localhost';
-- 刷新权限(MySQL 8.0 中 GRANT 已隐含刷新,老版本需要)
FLUSH PRIVILEGES;
常见权限:SELECT INSERT UPDATE DELETE CREATE DROP ALL PRIVILEGES(全部)。
列级授权示例:只让某用户看学生姓名、不能看成绩
GRANT SELECT(sname) ON school.student TO 'stu'@'localhost';
六、知识点:三大范式(设计表的规范)
| 范式 | 核心要求 | 消除的问题 |
|---|---|---|
| 1NF | 字段不可再分(原子性),一行一列只存一个值 | 重复组/多值 |
| 2NF | 满足 1NF,且非主属性完全函数依赖于候选码 | 部分函数依赖 |
| 3NF | 满足 2NF,且非主属性不传递依赖于候选码 | 传递函数依赖 |
- 部分函数依赖:如(学号,课号)→姓名,姓名只依赖学号(候选码的一部分)→ 违规,应拆表。
- 传递函数依赖:如 学号→系号→系主任,系主任经系号传递依赖学号 → 违规,系号、系主任应单独成表。
目标:减少冗余、避免更新异常。实际项目常为了查询效率适当"反范式",但考试按范式来。
七、全书知识地图(18 周串讲)
| 阶段 | 周次 | 主题 |
|---|---|---|
| 概念基础 | 1–2 | 数据库概述、三级模式/关系模型 |
| 环境搭建 | 3–4 | Windows / Linux 安装 MySQL、图形化工具 |
| 库表设计 | 5–8 | 建库建表、数据类型、约束/自增、索引、综合实训 |
| 数据查询 | 9–14 | SELECT、WHERE/ORDER、LIKE、函数/聚合、分组/子查询、JOIN/UNION |
| 数据更新 | 15 | INSERT / UPDATE / DELETE |
| 高级对象 | 16–17 | 视图、事务、存储过程、函数、触发器 |
| 安全与复习 | 18 | 备份还原、用户权限、范式、串讲 |
八、3+证书高频考点速记
- 关系模型术语:候选码/主码/外码、实体/参照完整性。
- 数据类型:
CHARvsVARCHAR、金额用DECIMAL。 - 约束:主键(唯一非空)、外键(引用一致)、
AUTO_INCREMENT须为主键。 - 查询:
WHERE(行)、GROUP BY+HAVING(组)、ORDER BY(排序)、LIKE(%/_)。 - 聚合:
COUNT(*)≠COUNT(列)(后者不计 NULL);聚合忽略 NULL。 - 连接:
INNER JOIN(交集)vsLEFT JOIN(保左表)。 - 子查询:先内后外;多值用
IN。 - 更新安全:
UPDATE/DELETE必须带WHERE。 - 事务 ACID:原子性、一致性、隔离性、持久性。
- 范式:1NF 原子、2NF 消部分依赖、3NF 消传递依赖。
九、易混点排查表
| 现象 | 解决方法 |
|---|---|
| 备份命令在 mysql> 里报错 | mysqldump 是系统命令行工具,退出 mysql 再执行 |
| 还原提示库不存在 | 先 CREATE DATABASE 并 USE 再 SOURCE |
| 用户连不上 | 确认 '用户'@'主机' 与连接来源匹配(localhost / %) |
| GRANT 不生效 | 确认权限粒度(库.* / 表 / 列);老版本需 FLUSH PRIVILEGES |
| 范式判断卡住 | 先找候选码,再看非主属性依赖的是"全部"还是"部分/传递" |
| 备份文件巨大 | 逻辑备份含数据;只想要结构加 --no-data |
十、小测验(自测)
- 创建用户
stu@localhost并只授school库 SELECT 权限,再回收 DELETE 的 SQL 怎么写? - 事务 ACID 四个特性各是什么含义?
- 简述 1NF / 2NF / 3NF 的核心要求,"部分函数依赖"和"传递函数依赖"分别指什么?
- 用 mysqldump 备份 school 库、再用 SOURCE 还原,命令分别怎么写?
【声明】本文由 AI 辅助生成,仅供 MySQL 数据库教学参考,如有疑误以教材为准。
浙公网安备 33010602011771号