数据库原理与应用 第 8 章 · 第二节
课程第 8 章第二节 接下来两步走权限记在哪全局那张库级那张表级那张字段级那张存储过程那张 版式
第 8 章 数据库安全性管理 · 第二节

权限系统与五张权限表

一条请求要过几道关,以及每一级的权限分别记在哪张表里。
本 节 知 识 点
  1. 08从概念转到 MySQL 的实现
  2. 09先认人,再逐条查权限
  3. 10五张权限表各管一级
  4. 11mysql.user 的四类字段
  5. 12mysql.db 一行管一个库
  6. 13mysql.tables_priv 一行管一张表
  7. 14mysql.columns_priv 一行管一列
  8. 15mysql.procs_priv 管执行权
08
第 8 章 · 第二节

从概念转到 MySQL 的实现

上一节讲的是道理,这一节看 MySQL 具体怎么做。

第 8 页课件

重 点

MySQL 把权限全部存在 mysql 这个库的几张表里,看得见摸得着。

打个比方

权限表就是门卫手里那本花名册,谁能进哪扇门,一行一行写着。

09
第 8 章 · 第二节

先认人,再逐条查权限

登录时认人认一次,之后每一条语句都要单独查权限。

第 9 页课件

试一试一条请求要过几道关

谁来查
SELECT tn, sal FROM teaching.t

重 点

四关按从大到小的顺序问,哪一关点头就放行,都摇头才报错。

想一想

登录成功是不是就代表能查表?

10
第 8 章 · 第二节

五张权限表各管一级

授到哪一级,就在哪张表里留下痕迹。

第 10 页课件

试一试授到哪一级记到哪张表

授权写成
权限表这一条记在哪儿

记牢它从大到小

  1. user
  2. db
  3. tables_priv
  4. columns_priv

重 点

第五张 procs_priv 管存储过程和函数,第 11 章才用得上。

11
第 8 章 · 第二节

mysql.user 的四类字段

身份、全局权限、连接配置、资源限制,四类字段。

第 11 页课件

关键术语

主码Primary key
User 加 Host 两列合起来
口令authentication_string
存的是哈希,不是明文

重 点

同一个用户名配不同的主机就是不同的账号,权限也各算各的。

知道更多

真机上这张表有五十来列,上机页那台终端只留了最能说明问题的十五列。

想一想

user 表的主码是哪两列?

12
第 8 章 · 第二节

mysql.db 一行管一个库

一行记住某个账号在某个库上的全部权限。

第 12 页课件

重 点

库级授权最省事,以后这个库里新建的表不用再单独授一遍。

打个比方

像给了整栋楼的通行证,楼里以后新开的房间也进得去。

13
第 8 章 · 第二节

mysql.tables_priv 一行管一张表

比库级细一层,一行只管点名的那张表。

第 13 页课件

重 点

最后那列 Column_priv 只是个记号,说明这张表上还另有字段级权限。

想一想

表级和库级同时授了,以哪个为准?

14
第 8 章 · 第二节

mysql.columns_priv 一行管一列

细到某一张表的某一列。

第 14 页课件

重 点

字段级只支持查询、插入、更新三种,删除是整行的事,细不到列。

打个比方

像只允许你改工资表上的职称一栏,姓名和工资两栏碰都不许碰。

想一想

为什么 DELETE 不能授到字段级?

15
第 8 章 · 第二节

mysql.procs_priv 管执行权

谁能调用哪个存储过程或函数,记在这里。

第 15 页课件

重 点

它多两列 Routine_name 和 Routine_type,用来区分是过程还是函数。

知道更多

存储过程要到第 11 章才写,这一章知道有这么一张表就够了。

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