实验四 数据库安全性
一、实验目的
(1)了解Oracle数据库的用户管理,权限管理和角色管理。
(2)掌握为用户分配权限的方法。
(3)了解为不同用户分配不同权限的目的及原因。
二、实验内容
用SQL语句完成以下内容:
1.用系统帐户sys登录数据库,分别创建用户Tom和Mary,创建时分配帐户口令。
create user Tom
identified by 2013013587
default tablespace users
temporary tablespace temp
quota unlimited on users;
create user Mary
identified by 2013013587
default tablespace users
temporary tablespace temp
quota unlimited on users;
2.为了使两位用户登录数据库请为其分配相应的权限。
grant create session to Tom;
grant create session to Mary;
3.授予用户Tom在自己模式下创建表和视图的权限,授予用户Mary可以在任何模式下创建表的权限。
grant create table,create view to Tom;
grant create any table to Mary;
4.用Mary帐户登录,在Tom模式下创建一张表,表结构自定。(如果建立的表中有主键约束,需要预先授予Mary用户create any index的权限。)
(1)建立的表中无主键约束
create table Tom.SS
(
sno varchar2(40)
);
(1)建立的表中有主键约束
grant create any index
to Mary;
create table Tom.SSS
(
snovarchar2(40) primary key
);
5.用系统帐户sys登录数据库,创建用户John,将角色权限DBA授予用户John,并将S、P、J、SPJ四张表导入到John模式下。
create user John
identified by 2013013587
default tablespace users
temporary tablespace temp
quota unlimited on users;
grant dba to John;
(1) 把对表S的INSERT权力授予用户Tom,并允许他再将此权限授予其他用户。
1)把对表S的INSERT权力授予用户Tom:
grant insert
on S
to Tom
with grant option;
2)验证:
insert
into John.s(sno,sname,city,sphone)
values('S6','好又多','杨凌',null);
3)验证Tom能否把对表S的INSERT权力授予用户Mary
grant insert
on S
to Mary;
insert
into John.s(sno,sname,city,sphone)
values('S8','好多多','杨大凌',null);
(2) 用户Mary对S,P,J三个表有SELECT和INSERT权力
1)用户Mary对S三个表有SELECT和INSERT权力
grant insert,select
on S
to Mary;
insert
into John.s(sno,sname,City,Sphone)
values('S99','大大大','大大',null);
2)用户Mary对P三个表有SELECT和INSERT权力
grant insert,select
on P
to Mary;
insert
into John.p
values('P99','大大','大红',10);
3)用户Mary对J三个表有SELECT和INSERT权力
grant insert,select
on J
to Mary;
insert
into John.j
values('J10','大大','杨凌');
(3) 用户Tom对SPJ表有DELETE权力,对QTY字段具有UPDATE权力。
1)用户Tom对SPJ表有DELETE权力
grant delete
on SPJ
to Tom;
delete
fromJohn.Spj
where sno='S9';
2)用户Tom对QTY字段具有UPDATE权力
grant update(QTY)
on SPJ
to Tom
updateJohn.Spj
set qty=300
where sno='S1';
(4) 把对用户Tom授予的所有权力收回
revoke create table
from Tom;
revoke create view
from Tom;
(5) 对用户Mary增加SPJ表的SELECT权力。
grant select
onJohn.Spj
to Mary;
6.在John模式下导入Sudent、Course和SC表,创建角色STUDBA,将修改Student、Course、SC表结构的权限、操作三张表中数据的权限授予角色STUDBA,将角色的权限授予所有用户。
grant create table
to studba;
grant select,update,insert
on Student
to studba;
grant select,update,insert
on SC
to studba;
grant select,update,insert
on Course
to studba;
grant studba
to Mary,John,Tom;
三,实验总结
(1) 需要创建用户或者删除用户时,当前用户一般要有dba权限。创建新用户的时候,创建用户名,密码,默认表空间,临时表空间,分配内存。创建好用户之后要授予连接数据库的权限。Password expire一般用于设置口令为过期状态。
(2) 注意区分在自己模式下的权限和任何模式下权限的区分
(3) 使用grant语句时如果指定with grant option子句,则获得某种权限的用户还可以把这种权限授予其他用户
(4) 授予系统权限:grant…to…
授予对象权限:grant…on…to…
回收系统权限:revoke…from…
回收对象权限:revoke…on…from…
创建角色:create role 角色名
修改角色:alter role 角色名
删除角色:drop role 角色名
授予角色一些权限:grant…on…to 角色名
把角色授予某用户:grant 角色名 to 用户名
把授予某用户的角色回收:revoke 角色名 from 用户名