数据库原理与应用 第 8 章 · 上机四
课程第 8 章上机四 建角色角色登不了录给角色授权分配了却不生效当场激活一劳永逸翻角色表撤销与删除连起来做 版式
第 8 章 数据库安全性管理 · 上机四

角色一条龙

建、授、配、活、撤五步走完,中间那个「不激活就不生效」的坑亲手踩一次。
已完成 0 / 8
本 次 上 机 题 目
  1. 01一句话建三个角色
  2. 02拿角色当账号试着登一次
  3. 03权限先装进角色
  4. 04全章最大的那个坑,亲手踩一次
  5. 05SET ROLE 只管这一个会话
  6. 06SET DEFAULT ROLE 让它下次登录自动生效
  7. 07角色关系记在哪两张表里
  8. 08课件那句写反了,亲手撞一次
  9. 给三个人配同一套权限
01
第 8 章 · 上机四

一句话建三个角色

角色是一个建好就锁住的账号。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

account_locked 一栏是 Y,这就是角色登不了录的原因。

知道更多

不写 @主机 默认是 %,所以 teacher 的全名是 `teacher`@`%`。

02
第 8 章 · 上机四

拿角色当账号试着登一次

报 3118,账号被锁。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

角色只是权限的一个包,从设计上就不是给人登录用的。

练一练

要让 teacher 能登录,最直接的做法是?
  1. AACCOUNT UNLOCK 并设口令
  2. B再建一个同名用户
  3. C没办法
答案 A

角色和用户在 MySQL 里本来就是同一张表里的行,解锁就成了用户。

03
第 8 章 · 上机四

权限先装进角色

语法和给用户授权完全一样。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

administrator 那行打出来是 ALL PRIVILEGES,全给齐了才这样显示。

知道更多

课件第 45 页把 PRIVILEGES 拼成了 PREVILEGE,照抄会报语法错。

04
第 8 章 · 上机四

全章最大的那个坑,亲手踩一次

绑上了,可 CURRENT_ROLE 还是 NONE。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

USE 报 1044。分配只是把线接上,开关还没合。

记牢它两步都要

  1. GRANT 角色
  2. SET ROLE

想一想

这时候 SHOW GRANTS 看得到角色那一行吗?

05
第 8 章 · 上机四

SET ROLE 只管这一个会话

合上开关,权限立刻就来了。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

退出去再登进来,CURRENT_ROLE 又变回 NONE,说明它只管一个会话。

知道更多

SET ROLE ALL 一次把这个用户名下所有角色全部激活。

06
第 8 章 · 上机四

SET DEFAULT ROLE 让它下次登录自动生效

这一句才是管理员该写的那一句。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

SET DEFAULT ROLE ALL 是把这个用户名下所有角色都设成默认激活。

分清楚两句分清楚

写法管多久
SET ROLE这一个会话
SET DEFAULT以后每次登录
07
第 8 章 · 上机四

角色关系记在哪两张表里

role_edges 记谁给了谁,default_roles 记谁默认激活。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

加了 USING 才把角色带来的那几行也一起摊开给你看。

知道更多

不加 USING 时只看得到一行 GRANT `teacher`@`%` TO `teacher2`@`%`。

08
第 8 章 · 上机四

课件那句写反了,亲手撞一次

REVOKE 收的是角色,不是用户。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

第一句报 3530,把两边写反了机器就认不出这层关系。

知道更多

课件第 47 页印的是 REVOKE 'teacher2' FROM 'teacher',前后颠倒了。

第 8 章 · 上机四

给三个人配同一套权限

建角色、授权、分配、激活,一句改动三个人同时变。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
提示符写着你现在是谁。换人登录敲 mysql -u 名 -p口令,退回上一个会话敲 exit。
mysql>

重 点

最后一句 GRANT 只写了一遍,p1 和 p2 同时多了一项 DELETE。

知道更多

人越多这个差距越大,这就是角色存在的全部理由。

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