【实验名称】:数据安全管理–视图、访问控制
【实验目标】:
- 理解视图消解机制;
- 理解视图的可更新性;分析更新过程中出现失败的原因;
- 理解视图的安全性支持。
- 学会使用grant和revoke命令来操作用户的权限,包括系统、对象等权限;
- 理解基于角色的访问控制;
【实验具体要求】:
- 视图
- 视图的消解与更新
- 根据学生表、教师表、课程表、学生选课表,创建一个包含学号、学生姓名、课程号、课程名称、学分、任课教师工号、任课教师姓名的视图v_stu_lesson;
- 对视图v_stu_lesson进行查询操作,查询教师号为3的老师所教授课程的学生选课信息,包含视图所有字段
- 对学生表、教师表、课程表、学生选课表进行联合查询操作,查询教师号为3的老师所教授课程的学生选课信息,包括学号、学生姓名、课程号、课程名称、学分、任课教师工号、任课教师姓名;(理解视图消解机制)
- 更新视图v_stu_lesson,更新课程4的学分为3分,分析更新操作可以执行成功或失败的原因;
- 更新视图v_stu_lesson,将教授课程1的老师变为teachnum为2,分析更新操作可以执行成功或失败的原因;
- 视图授权
- 由课程表创建一个只有‘C++编程’的课程信息的视图 v_c_lesson
- 将v_c_lesson的查询和修改权限授予一个新用户user_03,并测试查询和修改操作在授权前后的执行情况
- 权限
- 使用root用户登录MYSQL数据库系统,创建数据库role_demo,创建表t1和t2,分别创建user1和user2两个用户,user1具有t1的insert,t2的select权限;user2具有t1的select,t2的INSERT权限;
- 使用user1用户登录系统,user1能查看t1表吗?使用user2用户登录系统,user2能对查看t1、t2表吗?
- 现在交换两个用户的权限(撤回重新授权,麻烦)
- 删除user1和user2
- 角色
(1)创建两个角色,角色1具有t1的insert,t2的select权限;角色2具有t1的select,t2的INSERT权限;
(2)创建user1和user2,将角色1分配给user1,角色2分配给user2
(3)使用user1用户登录系统,user1能查看t1表吗?使用user2用户登录系统,user2能对查看t1、t2表吗?
(4)现在交换两个用户的权限(交换角色即可)
【实验步骤】:
(1)视图的消解与更新
1)根据学生表、教师表、课程表、学生选课表,创建一个包含学号、学生姓名、课程号、课程名称、学分、任课教师工号、任课教师姓名的视图v_stu_lesson;
2)对视图v_stu_lesson进行查询操作,查询教师号为3的老师所教授课程的学生选课信息,包含视图所有字段
3)对学生表、教师表、课程表、学生选课表进行联合查询操作,查询教师号为3的老师所教授课程的学生选课信息,包括学号、学生姓名、课程号、课程名称、学分、任课教师工号、任课教师姓名;(理解视图消解机制?)
4) 更新视图v_stu_lesson,更新课程4的学分为3分,分析更新操作可以执行成功或失败的原因;