实验名称 | 自主存取控制与完整性 | 实验时间 | |
一、 实验目的和要求 (1)掌握用户账户的创建 (2)掌握登录名和用户间的映射关系 (3)掌握存取控制语句的使用方法 (4)掌握级联授权语句的使用方法 (5)掌握trigger使用方法
| |||
二、 实验内容 (一)自主存取控制 1.创建用户 CREATE USER 'u1'@'%' IDENTIFIED BY '123456'; CREATE USER 'u2'@'%' IDENTIFIED BY '123456'; 2.执行如下操作: 注:部分语句需要自行添加“use 数据库名”语句。 (1)打开“查询设计器”窗口(即新建查询) 请问当前登录为哪个账户? (2)将score表的查询权限授予用户u1 use teaching grant select on score to u1; (3)u1用户登录服务器 图1 选择“连接MySQL” 图2 u1连接服务器 (4)分别执行如下语句: A.select sno from score; B.update score set sno = ‘0935222210’ where sno = ‘0935222201’; C.grant select on score to u2; 以上三条语句执行结果分别是什么?请说明原因? (5)参考第(3)步操作方法,登录系统管理员账户(root账户)。 (6)在查询设计器中输入如下授权语句: use Teaching grant select on score to u1 with grant option; (7)再次登录“u1”账户,在查询设计器中执行如下授权语句: A.grant select on score to u2; B.grant update on score to u2; 问:A、B语句执行结果有何不同,为什么? (8)登录账户“u2”,并执行如下语句: A.select * from score; B.update score set cno=’01’ where cno = ’02’; 分析A、B执行结果,说明原因。 (9)收回u1账户对score表的查询权限,并验证是否成功收回。 (二)完整性 根据以下要求定义触发器,并验证之。 (1)定义触发器 创建触发器tr_c_sc1,当修改course表中某门课程的cno时,使score表中对应cno也随之级联修改。 创建触发器tr_c_sc2,当删除course表中某门课程信息时,使score表中学生对应的选课信息也随之删除。 (2)验证结轮: A、将course表中cno为‘c05109‘修改为‘06109’ (提示:执行前先删除score表在cno上的外键) 触发的时机是after还是before? B、将cno为‘c06109’的课程信息从course表删除 触发器的时机是before还是after?为什么? | |||
三.实验操作步骤: 1.创建用户 CREATE USER 'u1'@'%' IDENTIFIED BY '123456'; CREATE USER 'u2'@'%' IDENTIFIED BY '123456'; (2)将score表的查询权限授予用户u1 use teaching grant select on score to u1; A.select sno from score; B.update score set sno = ‘0935222210’ where sno = ‘0935222201’; C.grant select on score to u2; 6)在查询设计器中输入如下授权语句: use Teaching grant select on score to u1 with grant option; A.grant select on score to u2; B.grant update on score to u2; (8)登录账户“u2”,并执行如下语句: A.select * from score; B.update score set cno=’01’ where cno = ’02’; (9)收回u1账户对score表的查询权限,并验证是否成功收回。 (1)定义触发器 创建触发器tr_c_sc1,当修改course表中某门课程的cno时,使score表中对应cno也随之级联修改。 CREATE TRIGGER tr_c_scl BEFORE UPDATE ON course FOR EACH ROW UPDATE score SET cno = new.cno WHERE cno = old.cno; 创建触发器tr_c_sc2,当删除course表中某门课程信息时,使score表中学生对应的选课信息也随之删除。 CREATE TRIGGER tr_c_sc2 BEFORE DELETE ON course FOR EACH ROW DELETE FROM score WHERE cno = old.cno; (2)验证结轮: A、将course表中cno为‘c05109‘修改为‘06109’ SET FOREIGN_KEY_CHECKS = 0; UPDATE course SET cno = 'c06109' WHERE cno = 'c05109'; 将cno为‘c06109’的课程信息从course表删除 SET FOREIGN_KEY_CHECKS = 0; DELETE FROM course WHERE cno = 'c06109'; | |||
四、 (包括问题和解决方法、心得体会、意见与建议等): 通过本次的实验我学到了掌握用户账户的创建,掌握登录名和用户间的映射关系,掌握存取控制语句的使用方法,掌握级联授权语句的使用方法,同时也是意识到学习需要不断进取,对于不熟悉的内容还要多勤加练习。
|
数据库自主存取控制与完整性
最新推荐文章于 2022-12-25 11:20:26 发布