用户权限管理 (Oracle实验)

(一)实验目的

掌握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中插入数据;
ALTER USER A DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;
grant create session,create table to A with admin option;
3.用户A连接登录数据库,创建关系模式student(sno,sname,sage)(自定义属性的数据类型),用户A向表student插入数据(插入内容自定义),并执行commit提交数据;
create table student
(
    sno   char(20) primary key,
    sname char(20) not null,
    sage  smallint
);
insert into student(sno,sname,sage) values('1606100234','李华','20');
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;
5.用户B把CREATE SESSION、对表student的select权限授予给用户C;
grant create session to C;
grant select on A.student to C;
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都提示权限不足(说明有自动级联回收,select属于对象权限)
9.用户A回收用户B的CREATE SESSION权限,测试用户B、C是否仍然可以连接登录到数据库;
revoke create session from B;
--B提示没有连接限权,C提示连接成功(说明没有自动级联回收,create是属于系统权限)
10.由系统管理员授予用户A创建角色的权限;
grant create role to A;
11.用户A创建角色MyRole,授予角色MyRole对表Student的select权限以及CREATE SESSION权限;
create role MyRole;
grant select on student to MyRole;
grant create session 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 with admin option;
select * from A.student;
--查询成功,说明有对Student的select的权限
14.用户A回收用户B的MyRole角色权限,测试B、C拥有的对Student表的select权限是否已经回收(角色权限回收并不影响当前已建立连接的用户,用户在下次登陆才失效);
revoke MyRole from B;
select * from A.student;
--用户B连接不到数据库,权限不足
--用户C仍然可以连接到数据库,也能够对Student表进行select操作,说明对角色的回收权限并没有自动级联回收

猜你喜欢

转载自blog.csdn.net/weixin_41156591/article/details/81084708