广州大学学生实验报告
开课学院及实验室:计算机科学与工程实验室418B室 2018年05月 24 日
学院 |
计算机科学与教育软件 |
年级、专业、班 |
网络*** |
姓名 |
卟咚君 |
学号 |
1606100*** |
|
实验课程名称 |
数据库原理实验 |
成绩 |
|
|||||
实验项目名称 |
用户权限管理 |
指导老师 |
*** |
|||||
实验目的
掌握Oracle中系统权限和对象权限的概念,能熟练进行用户权限的授予与回收;理解角色的基本概念,能熟练使用角色进行权限的授予与回收。
实验要求
熟悉实验室实验环境,阅读实验预备知识,掌握本实验内容涉及知识点的基本用法,了解实验中故障排除的基本方法。实验中根据实验步骤要求,写出相应的SQL代码运行,并测试执行结果是否满足需求,根据步骤要求独立完成实验报告。
实验环境
Oracle 10g,windows 2003;
实验内容和步骤
1.用SYSTEM账户登录数据库,创建用户A、B、C,密码分别为A、B、C;
create user A identified by A;
create user B identified by B;
create user C identified by C;
2.用SYSTEM账户把CREATE SESSION和CREATE TABLE权限授予给用户A,并允许用户A传递获得的权限;使用以下的ALTER USER命令修改用户A的默认表空间为users,使用户A能在student中插入数据;
grant create session,create table to A with admin option;
alter user A default tablespace users quota unlimited on users;
3.用户A连接登录数据库,创建关系模式student(sno,sname,sage)(自定义属性的数据类型),用户A向表student插入数据(插入内容自定义),并执行commit提交数据;
create table Student
(
Sno char(9) primary key,/*列级完整性约束条件*/
Sname char(20) unique,
Ssex char(3),
Sage smallint,
Sdept char(20)
);
insert into Student(sname,ssex,sno, sage, sdept) values('李勇','男','201215121',20,'CS');
insert into Student(sname,ssex,sno, sage, sdept) values('刘晨','女','201215122',19,'CS');
insert into Student(sname,ssex,sno, sage, sdept) values('王敏','女','201215123',18,'MA');
insert into Student(sname,ssex,sno, sage, sdept) values('张立','男','201215125',19,'IS');
commit;
4.用户A把CREATE SESSION、对表student的select和Insert权限授予给B,并允许B传递获得的权限(CREATE SESSION属于系统权限,对表student的select和Insert权限属于对象权限。在Oracle中,系统权限采用的选项是WITH ADMIN OPTION,对象权限采用的选项是WITH GRANT OPTION),然后使用用户B登录数据库测试用户B获取的权限(用户B获得student表的权限后,访问student表必须使用A.student);
grant create session to B with admin option ;
grant select,insert on student to B with grant option;
select *from A.student;
insert into A.Student(sname,ssex,sno, sage, sdept) values('小明','男','201215126',19,'IS');
5.用户B把CREATE SESSION、对表student的select权限授予给用户C;
grant create session to C with admin option ;
grant select on A.student to C with grant option;
6.用户C登录数据库,测试获得的权限;
select *from A.student;
7.用户A把student的属性sname、sage的修改权限授予用户B;
grant update(sname,sage) on student to B ;
8.用户A收回用户B对student表的select权限,测试用户B、C是否仍然具有对student表的select权限;
revoke select on student from B;
select *from A.student;--会报错,B会提示权限不足,C会提示不存在该视图
9.用户A回收用户B的CREATE SESSION权限,测试用户B、C是否仍然可以连接登录到数据库;
revoke create session from B;
--此时用户B已无法连接登陆到数据库
--此时用户C还能连接登陆到数据库
10.由系统管理员授予用户A创建角色的权限;
grant create role to A;
11.用户A创建角色MyRole,授予角色MyRole对表Student的select权限以及CREATE SESSION权限;
create role MyRole;
grant create session to MyRole;
grant select,insert on student to MyRole;
12.用户A把角色MyRole授予给用户B,并允许用户B对角色进行管理,测试用户B获取的权限(授予的角色权限在用户下次登陆才生效);--
grant MyRole to B with admin option;
select *from A.student;
13.用户B把角色MyRole授予给用户C,测试用户C是否具有对Student表的select权限;
grant MyRole to C;
select *from A.student;--用户C
14.用户A回收用户B的MyRole角色权限,测试B、C拥有的对Student表的select权限是否已经回收(角色权限回收并不影响当前已建立连接的用户,用户在下次登陆才失效);
revoke MyRole from B;
--未断开连接时,用户B仍拥有的对Student表的select权限,断开连接后再次连接会出错
--未断开连接时,用户B仍拥有的对Student表的select权限,断开连接后再次连接仍拥有的对Student表的select权限
实验总结
总结实验过程中涉及到的知识点、实验过程中遇到的问题及解决方法。
通过该实验掌握Oracle中系统权限和对象权限的概念,理解角色的基本概念,掌握了用户权限的授予与回收使用角色进行权限的授予与回收等基本语法。在授予用户权限的时候,系统权限和对象权限应该分开授予。在授予用户对象权限或者收回用户对象权限的时候,不会立即生效,需要等到下一次重新连接的时候才有效。在收回用户系统权限时,默认不会级联收回,在收回用户对象权限的时候,默认会级联收回。
。