数据库系统(三)——数据库安全性控制
一、实验目的:
-
理解自主存取控制和视图机制在数据库安全性中的应用;
-
熟练掌握用户管理、授予权限、收回权限的SQL语句,并验证其有效性;
-
理解角色的作用,能够区分角色和用户。
二、实验内容:
针对不同用户对学生选课数据库的不同权限要求,完成以下实验内容。
-
创建用户。掌握创建用户的语法结构,根据题目要求运用相关SQL语句创建必要的用户。
-
创建视图。根据题目要求,创建针对特定数据的视图。
-
权限授予和收回。理解和掌握GRANT和REVOKE语法结构的各个组成成分,结合用户和角色管理,分别设计不同的存取权限语句,并调试成功。
-
结合应用需求,理解角色的作用和角色管理的相关操作。
三、实验过程:
1、题目要求:
1.数据库:学生选课数据库
2.数据表:学生表 student、课程表 course、选课表 SC
3.用户:admin、stu、teacher、
4.权限要求:
说明:
(1)admin 用户拥有对数据库的所有操作权限,且能够为其他用户授予权限。
(2)teacher 用户在 student 表上只能查看 Sno、Sname、Ssex 和 Sdept 字段。
(2)学生不能更新 Sno 和院系字段。
(3)teacher 在 SC 表上只能更新 grade 字段。
2、在学生选课数据库的基础上,按以下要求完成权限设置。
1、使用 root 账号登录,创建用户 stu、teacher 和 amdin,密码为123:
create user 'stu'@'localhost' identified by '123';
create user 'teacher'@'localhost' identified by '123';
create user 'admin'@'localhost' identified by '123' with grant option;
新创建的用户可登录mysql,但无权限查看stu_course数据库。
2、根据表格要求及说明为用户设置相应的权限,并在设置完成后,测试设置的有效性。
①设置 admin 的权限:
grant all privileges
on student,course,SC to 'u1'@'localhost'
with grant option
②设置 stu 的权限:
grant select
on student,course,SC to'stu'@'localhost';
grant update
on student to'stu'@'localhost';
grant insert
on SC to'stu'@'localhost';
③设置 teacher 的权限:
grant select on student,course,SC to 'teacher'@'localhost';
grant update on SC(grade) to 'teacher'@'localhost';
3、创建用户 u1 和 u2,通过 admin 用户为 u1 授予 student 表上的 insert 权限,并允许 u1为其他用户授予该权限。
create user 'u1'@'localhost' identified by '123';
create user 'u2'@'localhost' identified by '123';
grant insert
on student to 'u1'@'localhost';
with grant option
4、通过 u1 用户为 u2 用户授予 student 表上的 insert 权限。
grant insert
on student to 'u2'@'localhost';
5、收回 u1 在 student 表上的 insert 权限,验证 u1 和 u2 的权限变化。
revoke insert
on student to 'u1'@'localhost';
默认会级联收回权限。