实验 3 数据库安全性与完整性控制实验
1.实验目的
练习安全性授权方法、安全性和完整性查看的操作方法。
2.实验内容
【实验 3-1】使用 create user 创建用户,创建单个用户 teacher,创建两个用户 teacher1 和 student。
【实验 3-2】通过直接操作 MySQL 用户表创建用户,创建单个用户 teacher2,创建两个用户 teacher3 和
student2(请注意,新版的 MySQL 可能不支持使用此方法创建新用户)。
【实验 3-3】新建一个 terminal 窗口,使用 mysql –u –h -p 方式登录 teacher。
【实验 3-4】再次新建一个 terminal 窗口,使用 mysql –u –h -p 方式登录 student。
【实验 3-5】使用 GRANT 语句对用户 student 赋予所有数据库所有表的 insert 权限和 update 权限。
【实验 3-6】使用 GRANT 语句对用户 student 赋予 school 数据库所有表的 select 权限。
【实验 3-7】使用 GRANT 语句对用户 student 赋予 school 数据库 stuinfo 表的 create 访问权限。
【实验 3-8】使用 GRANT 语句对用户 student 赋予 school 数据库 stuinfo 表的 stuno 列上的 select 访问权限。
【实验 3-9】使用 GRANT 语句对用户 student 赋予 s 所有数据库所有表的 select 访问权限,并设定 student 每
小时最多可使用 select 操作访问数据库的次数。
【实验 3-10】查看表 INFORMATION_SCHEMA.USER_PRIVILEGES 中有关 student 的信息,查看 user 表中的
内容信息。
【实验 3-11】查看表 INFORMATION_SCHEMA.SCHEMA_PRIVILEGES,找到 student 在 school 数据库下拥
有的权限。
【实验 3-12】查看表 INFORMATION_SCHEMA.TABLE_PRIVILEGES,查找 school 数据库中 stuinfo 数据表相
关的表权限。
【实验 3-13】查看表 INFORMATION_SCHEMA.COLUMN_PRIVILEGES,查找用户 sutdent 的其中一条记录,
其数据库为 school,表名为 stuinfo,列名为 stuno,查看其授予权限类型。
【实验 3-14】首先进入 school 数据库,如果没有,创建一个 school 数据库。
创 建 stuinfo 表 , 包 括 stuno varchar(10) ( 加 非 空 约 束 和 主 键 约 束 ) 、 stuname varchar(8) 、 stubir
date、stuage int。
创建表 course,包括 courno varchar(3)(非空约束)、courname varchar(10)、schyear date(非空约束)、
credit int,主键为课程号 courno 和学年 schyear。
创建 stuandcour 表,包括 stuno varchar(10)、courno varchar(3)、chono varchar(10),定义其主键为选课
号 chono,stuno 为外键,参考 stuinfo 中的 stuno 列。
上述操作完成后,继续向 stuandcour 数据表中添加新的字段 schyear date,添加外键(courno,schyear)参
照 course 表中的 courno,并删除时置空值。
【实验 3-15】查看表 INFORMATION_SCHEMA.TABLES——存放数据库中所有数据库表信息,所得到的记录
值有很多条,然后观察其内部字段表示,进一步筛选表名为 stuinfo 的记录,school 数据库 stuinfo 表的所有基
本信息都在这里描述。
【实验 3-16】查看表 INFORMATION_SCHEMA.TABLE_CONSTRAINTS——存放表中所存在的约束信息。进
一步筛选表名为 stuandcour 的记录信息,可以看到关于该表有三条约束信息,与我们设定的一样,其拥有两个
外键和一个主键。尽管这三种约束涉及四个列字段,但是基于表层面还是三个约束,因为有一个外键是由两个列
组成的。
【实验 3-17】查看表 INFORMATION_SCHEMA.KEY_COLUMN_USAGE——存放数据库里所有具有约束的键
信息,然后通过对表名筛选,选出表 stuandcour 的所有以列为单位的约束信息,通过观察可以得出该查询结果
与 table 级别约束的查询结果个数不同,这里出现四个结果,列名 COLUMN_NAME 部分涉及 stuandcour 表中
所有约束包含的全部列。据我们所知,stuandcour 表的主键为 chono,为第一行结果;第一个外键只有一列,
该列为 stuno,出现在第 二 行结果;第 二 个外键含有两列,分别为 courno、schyear,出现在第三行、第四行。
3.实验要求
(1)所有操作 均 在 命令 行 或者 MySQL W or k bench 中完成。
(2) 将 操作过程以 屏幕抓图 的方式 复制 , 形 成实验 文档 ,并对照本 章 内容 写 出分 析报告 。
答案:
1.实验目的
练习安全性授权方法、安全性和完整性查看的操作方法。
2.实验内容
【实验 3-1】使用 create user 创建用户,创建单个用户 teacher,创建两个用户 teacher1 和 student。
【实验 3-2】通过直接操作 MySQL 用户表创建用户,创建单个用户 teacher2,创建两个用户
teacher3 和 student2(请注意,新版的 MySQL 可能不支持使用此方法创建新用户)。
【实验 3-3】新建一个 terminal 窗口,使用 mysql –u –h -p 方式登录 teacher。

【实验 3-4】再次新建一个 terminal 窗口,使用 mysql –u –h -p 方式登录 student。
【实验 3-5】使用 GRANT 语句对用户 student 赋予所有数据库所有表的 insert 权限和 update 权限。

【实验 3-6】使用 GRANT 语句对用户 student 赋予 school 数据库所有表的 select 权限
。
【实验 3-7】使用 GRANT 语句对用户 student 赋予 test 数据库 stuinfo 表的 create 访问权限。