高端品牌网站设计公司,wordpress 连载,免费自助建站平台系统,wordpress mp4 插件下载广州大学学生实验报告 开课实验室#xff1a;计算机科学与工程实验#xff08;电子楼418B#xff09; 2019年5月22日 学院 计算机科学与网络工程学院 年级、专业、班 计科172 姓名 学号 实验课程名称 数据库原理实验 成绩 实验项目名称 用户权限管理…广州大学学生实验报告 开课实验室计算机科学与工程实验电子楼418B 2019年5月22日 学院 计算机科学与网络工程学院 年级、专业、班 计科172 姓名 学号 实验课程名称 数据库原理实验 成绩 实验项目名称 用户权限管理 指导老师 实验目的 对ORACLE数据库系统的用户权限管理有感性认识。 事务是由用户定义的一个数据库的操作序列这些操作要么全做要么全不做是一个不可分割的工作单位。 Oracle数据库使用事务机制来确保数据的一致性数据库的事务机制是发生在第一个SQL语句执行时结束于COMMIT或ROLLBACK命令执行时。只有一个事务执行完成后另一个可执行的SQL语句才能执行。SQL执行时所有的数据改变都是暂时的只有结束事务的时候才会真正写入数据库。通过本实验对事务管理有感性认识。 实验内容 理论学习Oracle 权限设置 一、权限分类系统权限 系统规定用户使用数据库的权限。系统权限是对用户而言)。 实体权限 某种权限用户对其它用户的表或视图的存取权限针对表或视图而言。 二、系统权限管理 1、系统权限分类DBA拥有全部特权是系统最高权限只有DBA才可以创建数据库结构。 RESOURCE拥有Resource权限的用户只可以创建实体不可以创建数据库结构。 CONNECT拥有Connect权限的用户只可以登录Oracle不可以创建实体不可以创建数据库结构。 对于普通用户授予connect, resource权限。 对于DBA管理用户授予connectresource, dba权限。 2、系统权限授权命令 系统权限只能由DBA用户授出sys, system最开始只能是这两个用户 授权命令grant connect, resource, dba to 用户名1 [,用户名2]...; 普通用户通过授权可以具有与system相同的用户权限但永远不能达到与sys用户相同的权限system用户的权限也可以被回收。 例以system用户身份连接数据库之后执行 create user cc identified by ccpassword ; grant resource, connect, DBA to cc; 查询用户拥有哪里权限 select * from dba_role_privs; select * from dba_sys_privs; select * from role_sys_privs; 删除用户 drop user 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除 3、系统权限传递 增加WITH ADMIN OPTION选项则得到的权限可以传递。 grant connect, resource to CC with admin option; //可以传递所获权限 4、系统权限回收系统权限只能由DBA用户回收 Revoke dba, resource from CC; 5、删除用户 drop user 用户名; //用户没有建任何实体 drop user 用户名 CASCADE; // 将用户及其所建实体全部删除 说明当前正连接的用户不得删除。 三、实体权限管理1、实体权限分类 select, update, insert, alter, index, delete, all //all包括所有权限 execute //执行存储过程权限 user01: grant select, update, insert on product to user02; grant all on product to user02; user02: select * from user01.product; // 此时user02查user_tables连接中能显示的不包括user01.product这个表但如果查all_tables则可以查到因为他可以访问。 2. 将表的操作权限授予全体用户 grant all on product to public; // public表示是所有的用户这里的all权限不包括drop。 select owner, table_name from all_tables; // 用户可以查询的表 select table_name from user_tables; // 用户创建的表 select grantor, table_schema, table_name, privilege from all_tab_privs; // 获权可以存取的表被授权的 select grantee, owner, table_name, privilege from user_tab_privs; // 授出权限的表(授出的权限) 3. DBA用户可以操作全体用户的任意基表无需授权包括删除 DBA用户 Create table stud02.product(id number(10), name varchar2(20)); drop table stud02.emp; create table stud02.employee as select * from scott.emp; 4. 实体权限传递(with grant option) user01: grant select, update on product to user02 with grant option; // user02得到权限并可以传递。 5. 实体权限回收 user01: Revoke select, update on product from user02; //传递的权限将全部丢失。 说明如果取消某个用户的对象权限那么对于这个用户使用WITH GRANT OPTION授予权限的用户来说同样还会取消这些用户的相同权限也就是说取消授权时是级联的。 正式操作 以SYSTEM身份连接到orcl数据库创建新的用户并授权如果原来已有这个用户可以忽略本步骤create user cc identified by ccpassword ; grant resource, connect, DBA to cc; 以用户CC的身份建立连接并在此连接下执行后面的操作select * from user_role_privs; 可以看到自己的权限有多少种权限 在CC连接中拷贝代码运行删去旧的同名数据表如果是新创建的用户此步骤可以省略Declare tmp integer default 0; Begin select count(*) into tmp from user_tables where table_nameRB; if(tmp0) then execute immediate drop table RB; end if; select count(*) into tmp from user_tables where table_nameREADER; if(tmp0) then execute immediate drop table READER; end if; select count(*) into tmp from user_tables where table_nameBOOK; if(tmp0) then execute immediate drop table BOOK; end if; end; 在CC连接中拷贝代码运行建立表格及输入数据create table Reader ( RNO varchar2(4) primary key, Rname varchar2(10) not null, Rsex varchar2(2), Rage integer, Rboss varchar2(10), Raddress varchar2(30) ) ; insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R001,张三,20,男,李四,416); create table Book ( BNO varchar2(4), Bname varchar2(50) not null, Bauthor varchar2(50), Bpress varchar2(50), Bprice numeric(6,2), primary key(BNO) ); insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B001,严蔚敏,数据结构,清华大学出版社,null); create table RB ( RNO varchar2(4), BNO varchar2(4), RBdate date default sysdate, primary key(RNO,BNO), foreign key (RNO) references Reader(RNO), foreign key (BNO) references Book(BNO) ); insert into RB (RNO,BNO) values (R001,B001); 在CC连接中确认orcl数据库中有这三个数据表以及相应的数据 在CC连接中查询用户CC的权限信息每句单独执行select * from dba_role_privs; select * from dba_sys_privs; select * from role_sys_privs; 在CC连接中查询用户创建的表select table_name from user_tables; 在CC连接中删去数据表BR成功吗drop table rb; 再次执行 select table_name from user_tables; 显示什么结果 回收用户CC的部分权限以SYSTEM的身份连接可以在SQL DEVELOPER的右上角切换在此连接中执行Revoke dba, resource from CC; 以CC的身份连接数据库可以在SQL DEVELOPER的右上角选择连接执行Create Table Aa(cola int); 成功吗为什么 切换为SYSTEM的连接执行grant resource to CC; 切换为CC的连接执行select * from user_role_privs; 可以看到自己的权限有多少种权限 Create Table Aa(cola int); 成功吗为什么 切换为SYSTEM的连接执行DROP USER CC; 成功吗为什么 删除连接CC在SYSTEM的连接中执行DROP USER CC; 成功吗为什么 怎样才能成功删除用户CC 仅仅断开连接就行了吗 Drop User Cc Cascade; 为何要加Cascade 删去后还能以用户CC的身份连接吗 删去后不能以用户CC的身份连接 在SYSTEM的连接中重新创建用户CC和DDCreate User Cc Identified By Ccpassword; Create User dd identified by ddpassword; grant resource, connect, DBA to cc,dd; 查看这两个用户的权限只有SYSTEM才有权执行下面这条语句 select * from dba_role_privs where GRANTEE in (CC,DD); 以CC和DD的身份分别建立连接使得目前系统加上原来的SYSTEM共有三个连接为识别方便连接名和用户名一致选择CC连接执行 Create Table from_CC(内容 char(1)); Insert into from_cc values(a); select * from from_cc; 选择DD连接执行 select owner, table_name from all_tables where table_nameFROM_CC; 显示什么什么意思 查询已建立的表及表的拥有者 select * from from_cc; 显示什么什么意思 表或视图不存在 选择CC连接执行 grant all on from_cc to dd; 选择DD连接执行 select owner, table_name from all_tables where table_nameFROM_CC; 显示什么什么意思 查询已建立的表及表的拥有者 select * from from_cc; 显示什么 select * from cc.from_cc; 显示什么怎么回事 表from_cc 的创建者是cc其属于cc 刷新DD连接下的表有没有“FROM_CC”这个表 没有 选择DD连接执行 Insert into cc.from_cc values(d); select * from cc.from_cc; 插入成功了吗 成功 选择CC连接执行Revoke insert on FROM_CC from DD; 选择DD连接执行 select * from cc.from_cc; 能显示表的内容吗 可以 Insert into cc.from_cc values(y); select * from cc.from_cc; 插入成功了吗 // 貌似插入成功 貌似成功 选择SYSTEM连接执行 Revoke dba, resource from DD; 选择DD连接执行 select * from cc.from_cc; 能显示表的内容吗 // 能 Insert into cc.from_cc values(z); select * from cc.from_cc; 插入成功了吗 // 貌似插入成功 选择CC连接执行 Revoke all on FROM_CC from DD; select * from cc.from_cc; // 没有显示前面成功插入的记录y、z 选择DD连接执行 select * from cc.from_cc; // 显示前面成功插入的记录y、z 删除连接DD后重新添加连接DD select * from cc.from_cc; 显示这个数据对象不存在。 select * from user_role_privs; 当前用户有多少种权限 一种 Create Table from_DD(哦 char(2)); 能执行吗 不能 选择SYSTEM连接执行 grant resource to dd; 选择DD连接执行 Create Table from_DD(哦 char(2)); 能执行吗 不能 删除连接DD后重新添加连接DD Create Table from_DD(哦 char(2)); Insert into from_dd values(甲); select * from from_dd; 能看到记录“甲”吗能 选择CC连接执行 select * from dd.from_dd; 能看到记录“甲”吗不能 用户CC怎样才能看到from_dd表的所有记录用户CC怎样才能为from_dd表添加记录 选择dd连接执行 grant all on from_dd to cc;就能看到了 用户CC怎样才能为from_dd表添加记录 Insert into dd.from_dd values(d); 并且commit提交后用户CC才能为from_dd表添加记录 创建新的用户并授权create user cc1 identified by cc1password ; grant resource, connect, DBA to cc1; 以用户CC1的身份建立连接并在此连接下执行后面的操作create table mytable(tno char(2) primary key, tname char(8)); 拷贝代码运行建立表格及输入数据Insert Into Mytable Values(01,赵老大); select * from mytable; Insert Into Mytable Values(02,赵老二); select * from mytable; Insert Into Mytable Values(03,赵老三); select * from mytable; 表中共有多少行数据 3行 Insert Into Mytable Values(04,钱老大); select * from mytable; Insert Into Mytable Values(05,钱老二); select * from mytable; Rollback; select * from mytable; 回退到哪里表中剩下多少行数据 0行数据 Insert Into Mytable Values(01,赵老大); select * from mytable; Insert Into Mytable Values(02,赵老二); select * from mytable; Insert Into Mytable Values(03,赵老三); select * from mytable; commit; Insert Into Mytable Values(04,钱老大); select * from mytable; Insert Into Mytable Values(05,钱老二); select * from mytable; Rollback; select * from mytable; 回退到哪里表中剩下多少行数据commit的作用是什么 3行数据commit的作用是及时提交数据 Insert Into Mytable Values(04,钱老大); Savepoint p1; select * from mytable; Insert Into Mytable Values(05,钱老二); Savepoint p2; select * from mytable; Insert Into Mytable Values(06,钱老三); select * from mytable; Rollback to p2; select * from mytable; Rollback to p1; select * from mytable; 运行结果显示Savepoint的作用是什么 保存点savepoint是事务过程中的一个逻辑点用于取消部分事务当结束事务时会自动的删除该事务中所定义的所有保存点。当执行rollback时通过指定保存点可以回退到指定的点。