1、 1 / 9数据库原理与应用实验报告实验名称: 班 级:学 号: 姓 名:一、实验目的(1)了解 Oracle 数据库中的用户管理,模式,权限管理和角色管理。(2)掌握为用户分配权限的方法。(3)了解为不同用户分配不同权限的目的及原因。二、实验过程1用系统帐户 sys 登录数据库,分别创建数据库内部用户 user_one 和user_two,创建时自己为用户分配帐户口令。语句:create user user_oneidentified by 123456default tablespace userstemporary tablespace tempquota unlimited on us
2、ers;create user user_twoidentified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;执行结果:2 / 92为了使两位用户登录数据库请为其授予相应的权限。语句:grant create session to user_one;grant create session to user_two;执行结果:3授予用户 user_one 在自己模式下创建表的权限,在任何模式下删除表的权限,授予用户 user_two 可以在任何模式下创建表的权限,查询任何
3、模式下表中数据的权限和在任何模式下创建视图的权限。语句:grant create table,drop any table to user_one;grant create any table,create any view,select any table to user_two;执行结果:3 / 94分别用 user_one 和 user_two 登录,写出相应的 SQL 语句验证为其授予的权限。 (如果建立的表中有主键约束,需要预先授予 user_one 和 user_two 用户create any index 的权限。 )语句:create table t1 (a varchar2(
4、10);drop table heart.change_major;create table heart.t2(b varchar2(10);create view heart.abcasselect sc.sno,student.sname,ame,gradefrom student,sc,coursewhere student.sno=sc.sno and o=o and major=生物工程;select sc.sno,student.sname,ame,gradefrom student,sc,coursewhere student.sno=sc.sno and o=o and maj
5、or=生物工程;执行结果:4 / 95用系统帐户 sys 登录数据库,创建用户 user_three,将角色权限 DBA 授予用户 user_three,并将 S、P、J、SPJ 四张表导入到 user_three 模式下。语句:create user user_three5 / 9identified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;grant dba to user_three;执行结果:6使用 user_three 登录,完成如下授权,在 user_one
6、 和 user_two 用户下执行相应的 SQL 语句验证授权是否成功。(1)把对表 S 的 INSERT 权力授予用户 user_one,并允许他再将此权限授予其他用户。语句:grant insert on s to user_one6 / 9with grant option;执行结果:(2)用户 user_two 对 S,P,J 三个表有 SELECT 和 INSERT 权力语句:grant select,insert on s to user_two;grant select,insert on p to user_two;grant select,insert on j to use
7、r_two;执行结果:(3)用户 user_one 对 SPJ 表有 DELETE 权力,对 QTY 字段具有 UPDATE 权力。语句:grant delete,update(qty) on spj to user_one;执行结果:7 / 9(4)收回 user_one 对 S 表的插入权限。语句:revoke insert on s from user_one;执行结果:7把对用户 user_two 授予的所有权限收回,只保留登录权限。 (系统权限和对象权限应该分别收回)语句:revoke create any table,create any view,select any table
8、 from user_two;执行结果:8用系统帐户 sys 登录数据库,创建用户 user_four,将角色权限 DBA 授予此用户,在 user_four 的模式下导入 Sudent、Course 和 SC 表。语句:create user user_fouridentified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;grant dba to user_four;执行结果:8 / 99使用 user_four 登录,创建角色 STUDBA,将修改 Student、
9、Course 、SC 表结构的权限,插入、删除、修改和查询三张表中数据的权限授予角色 STUDBA,将角色的权限授予 user_one 和 user_two。语句:create role STUDBA;grant alter,insert,delete,update,select on course to studba;grant alter,insert,delete,update,select on student to studba;grant alter,insert,delete,update,select on sc to studba;grant studba to user_one,user_two;执行结果:10对于通过 STUDBA 角色授予的权限,在 user_one 和 user_two 用户下执行相应的 SQL 语句对权限进行验证。语句:alter table user_four.student add s_entrance date;select * from student;执行结果:9 / 9三、实验总结在此次试验中,我通过查询、询问,解决了很多问题。我了解了 oracle 中授权的基本操作和相关知识。认识到了安全的重要性。 同时以认识到了学习的不足,在以后的学习中要更加努力。