1. 查看当前用户
show user;
2. 赋予系统角色:
a) 利用system用户,创建用户zhangsan
create user zhangsan identified by 123;
b) 试着用户zhangsan登录(无法登 因为没有授予权限 )
c) 利用system用户,为用户zhangsan授予connect角色
grant connect to zhangsan;
d) 试着用户zhangsan登录(可以登录)
Conn zhangsan/123;
e) 查看当前用户,在确定当前用户是zhangsan的情况下,在用户zhangsan下创建数据表stu,结构自定(无法 ,因为创建未授予权限)
f) 利用system用户,为用户zhangsan授予resource角色
grant resource to zhangsan;
g) 在确定当前用户是zhangsan的情况下,在用户zhangsan下创建数据表stu,结构自定(可以创建)
h) 查看当前用户,在确定当前用户是zhangsan的情况下,在用户zhangsan下创建视图,内容来自数据表stu的全部内容(不可以创建,权限不足)
create view view1 as select * from stu;
i) 利用system用户,为用户zhangsan授予创建视图的权限,并在用户zhangsan下创建视图,内容来自数据表stu的全部内容(可以创建)
grant create view to zhangsan;
3. 赋予对象角色
a) 在scott用户下创建表student,表的内容和emp表相同
create table student as select * from emp;
b) 使用scott用户赋予zhangsan对其student表的访问权限
i. 使用zhangsan访问scott用户下的student表,并且创建一个stu表,其内容和student表相同
(没有权限访问 无法创建)
ii. scott赋予zhangsan查看student的权限,并使用zhangsan访问scott用户下的student表
grant select on student to zhangsan;
select * from scott.student;
iii. 在zhangsan用户中创建一个stu表,其内容和student表相同
create table stu as select * from scott.student;
c) 使用scott用户赋予zhangsan对其student表的insert权限
i. 使用zhangsan用户对scott用户的student表增加数据,姓名“Eric”(权限不足)
ii. scott赋予zhangsan查看student的权限,并使用zhangsan对scott用户下的student表增加数 据,姓名“Eric”,并查看结果
conn scott/123;
grant insert on student to zhangsan;
connzhangsan/123;
insert into scott.student (ename) values('Eric');
d) 使用scott用户赋予zhangsan对其student表的update权限
i. 使用zhangsan用户对scott用户的student表进行更新,将姓名“Eric”的雇员号设置为“8888”
(权限不足)
ii. scott赋予zhangsan对student修改数据的权限,并使用zhangsan对scott用户
connscott/123;
grantupdate on student to zhangsan;
connzhangsan/123;
updatescott.student set empno='888' where ename='Eric';
select * from scott.student;
e) 使用scott用户赋予zhangsan对其student表的delete权限
i. 使用zhangsan用户对scott用户下的student表进行删除,将“Eric”的记录删除(权限不足)
ii. scott用户赋予zhangsan对其student表的删除权限,并使用zhangsan对scott用户下的student 表进行删除,将“Eric”的记录删除,并查看结果
connscott/123;
grantdelete on student to zhangsan;
connzhangsan/123;
deletefrom scott.student where ename='Eric';
select * from scott.student;
4. 收回权限
a) 用scott用户将赋于zhangsan的四个权限分别收回,并测试在zhangsan用户下增加、更新、删除、查 看student表
connscott/123;
revokeselect on student from zhangsan;
connzhangsan/123;
select * from scott.student;
connscott/123;
revokeall on student from zhangsan;
conn zhangsan/123;
insert into scott.student (ename) values('Eric');
b) 使用system用户将scott用户下对student表的所有权限赋予zhangsan,并测试在zhangsan用户下增加、更 新、删除、查看student表
connsystem/123;
grant all on scott.student to zhangsan;
connzhangsan/123;
insertinto scott.student (ename) values('Eric');
select * from scott.student;
c) 使用scott用户将zhangsan对student的所有权限都收回,并测试在zhangsan用户下增加、更新、删除、查看student表(尽管不是scott赋予的权限但只要有revoke权限的用户都可以收回)
connscott/123;
revokeall on student from zhangsan;
connzhangsan/123;
insertinto scott.student (ename) values('Eric');
select * from scott.student;
d) 使用system用户收回zhangsan登录和创建表的权限,并测试zhangsan用户是否可以登录
connsystem/123;
revokeresource from zhangsan;
connzhangsan/123;
create table aa(name char(2)); 权限收回了 无法创建表
conn system/123;
revoke connect from zhangsan;
conn zhangsan/123; 权限收回了 无法登录
5. 权限维护
a) 创建用户lisi
create user lisi identified by 123;
b) 使用用户zhangsan将resource,connect角色赋予lisi,并测试用户lisi登录和创建数据表
connsystem/123;
grantconnect,resource to zhangsan with admin option;
connzhangsan/123;
grant resource,connect to lisi;
connlisi/123;
create table aa(name char(2));
c) 使用用户zhangsan将scott用户下student表的相应权限赋予lisi,并测试用户lisi下查看scott用户下的student表
connsystem/123;
grant allon scott.student to zhangsan with grant option;
connzhangsan/123;
grant allon scott.student to lisi;
conn lisi/123;
select * from scott.student ;
d) 收回zhangsan的resource,connect角色,测试lisi是否可以登录和创建数据表?
lisi可以,因为系统权限不会级联
e) 收回zhangsan对scott用户里student表的对象权限,观察lisi是否还拥有这些对象权限
Lisi也失去了这些权限因为对象权限是级联的,zhangsan赋予lisi的对象权限
若zhangsan的对象权限被收回 lisi的一并被收回
connsystem/123;
revokeall on scott.student from zhangsan;
connlisi/123;
select * from scott.student;
6. 修改密码,删除用户
a) 在用户lisi下,修改其密码为:123456
conn lisi/123;
password
b) 在用户system下,修改lisi的密码为:456798
conn system/123;
password lisi
c) 删除用户lisi
drop user lisi cascade;