数据库原理与应用 第 8 章 · 第三节
课程 › 第 8 章 › 第三节 GRANT授权的例子Workbench 授权SHOW GRANTSREVOKE转授权限 版式
第 8 章 数据库安全性管理 · 第三节

权限管理

GRANT 的格式和四个层次的授权,查看权限、回收权限和转授权限
本 节 知 识 点
  1. 13授予权限:GRANT
  2. 14四个层次的授权例子
  3. 15在 Workbench 中授予权限
  4. 16查看权限:SHOW GRANTS
  5. 17回收权限:REVOKE
  6. 18转授权限:WITH GRANT OPTION
13
第 8 章 · 第三节 · 课件第 31、32 页合并重做

授予权限:GRANT

ON 后面写的层次,决定了权限的范围和记录在哪张表中。

8.4 MySQL 权限管理课件第 31、32 页合并

授予权限:GRANT

GRANT 权限名 [(字段列表)] [, 权限名 [(字段列表)] …] ON 权限的层次 TO '用户名'@'主机' [, …] [WITH GRANT OPTION];
ON 后面写权限级别记录在
*.*服务器(全局)mysql.user
库名.*数据库mysql.db
库名.表名表mysql.tables_priv
库名.表名,权限名后面写字段字段mysql.columns_priv
PROCEDURE 库名.过程名存储过程mysql.procs_priv
  • 权限分为四类:管理权限(如 CREATE USER)、数据库权限、数据库对象权限(如 SELECT)、存储过程和函数权限
  • WITH GRANT OPTION:允许对方把得到的权限再授予别人
14
第 8 章 · 第三节 · 课件第 33、34、35 页合并重做

四个层次的授权例子

全局、数据库、表、字段,范围一层比一层小。

8.4 MySQL 权限管理课件第 33、34、35 页合并

四个层次的授权例子

全局 teacher10 的全部权限,允许转授
GRANT ALL
ON *.* TO 'teacher10'@'localhost'
WITH GRANT OPTION;
表 teacher3 在教师表 t 上的四项权限
GRANT SELECT, INSERT, UPDATE, DELETE
ON teaching.t TO 'teacher3'@'localhost';
数据库 teacher4 在 teaching 库上的三项权限
GRANT SELECT, CREATE, INSERT
ON teaching.* TO 'teacher4'@'localhost';
字段 teacher2 只能查询 t 表的 tno、tn
GRANT SELECT(tno, tn)
ON teaching.t TO 'teacher2'@'192.168.1.23';
  • 授权前用户必须已经存在。MySQL 8.0 中 GRANT 不会自动创建用户,给不存在的用户授权报错 1410
  • 字段级权限只有 SELECT、INSERT、UPDATE 三种
  • ALL 表示这一层次上的全部权限,一般只授予管理员

练一练

只想让 teacher2 查询 t 表的 tno、tn 两个字段,应授予哪一级的权限?
  1. A数据库级
  2. B表级
  3. C字段级
答案 C

字段级权限写成 SELECT(tno, tn) ON teaching.t,其他字段查不到。

实 验

实验 2-2 检验库级权限

实 验

实验 2-3 表级和字段级权限

15
第 8 章 · 第三节 · 课件第 36 页

在 Workbench 中授予权限

选择授权的层次,勾选权限后点 Apply。

课件第 36 页

重 点

All Schema (%) 相当于 ON *.*,Selected schema 相当于 ON 库名.*。

16
第 8 章 · 第三节 · 课件第 37、38 页

查看权限:SHOW GRANTS

SHOW GRANTS 列出一个用户的全部授权。

课件第 38 页

重 点

新用户的第一行是 GRANT USAGE,表示只能登录,没有其他权限。

知道更多

SHOW GRANTS 后面不写 FOR,查看的是当前用户自己的权限。

实 验

实验 2-1 授予库级权限

17
第 8 章 · 第三节 · 课件第 39 页

回收权限:REVOKE

REVOKE 只收回指定层次上的指定权限。

课件第 39 页

试一试REVOKE 只收回指定的权限

执行
SHOW GRANTS FOR 'teacher3'@'localhost'

重 点

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户; 一次收回全部权限。

知道更多

收回没有授予过的库级或表级权限,报错 1141 或 1147。

实 验

实验 2-5 回收权限

18
第 8 章 · 第三节 · 课件第 40 页

转授权限:WITH GRANT OPTION

加了 WITH GRANT OPTION,得到权限的用户可以再授予别人。

课件第 40 页

重 点

只能转授自己拥有的权限,转授其他权限报错 1142。

练一练

teacher3 把权限转授给了 teacher2,之后 teacher3 的权限被全部收回。teacher2 得到的权限会怎样?
  1. A一起被收回
  2. B仍然保留
答案 B

MySQL 回收权限时不会连带收回转授出去的权限,要另外对 teacher2 执行 REVOKE。

实 验

实验 2-4 转授权限

保山学院·人工智能教研室·曹鼎鼎