|
|
|
|
(1)掌握用户账户的创建 (2)掌握登录名和用户间的映射关系 (3)掌握存取控制语句的使用方法 (4)掌握级联授权语句的使用方法 (5)掌握trigger使用方法
|
|||
(一)自主存取控制
(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 = ‘ 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;
(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’
(提示: 触发的时机是after还是before? B、将cno为‘c06109’的课程信息从course表删除 触发器的时机是before还是after?为什么?
|
|||
三.
(2)将score表的查询权限授予用户u1 use teaching grant select on score to u1;
A.select sno from score;
B.update score set sno = ‘ 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’;
|
|||
|