涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等

赋予权限:前三个要在管理员权限用户下进行操作

方法1:
grant dba to db_user;--赋予用户数据库管理权限
方法2:
grant connect to db_user;--赋予用户连接权限 注意:在这里,准确的讲,connect不是权限,而是角色。
grant resource to db_user;--赋予用户资源权限
方法3:
grant create session to db_user;--赋予用户创建会话的权限,能够正常登录了
grant resource to db_user;--赋予用户资源权限
方法4:connect db_user/db_user_pw as sysdba或者as sysoper;--连接数据库并赋予权限

管理权限和角色

介绍
这一部分我们主要看看Oracle中如何管理权限和角色,权限和角色的区别在那里。 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作。如果要执行某种特定的数据库操作,则必须为其授予系统的权限;如果用户要访问其它方案的对象,则必须为其授予对象的权限。为了简化权限的管理,可以使用角色。

系统权限

用户名,权限,角色

在建立用户时,Oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,Oracle会将权限和角色的信息存放到数据字典。

通过查询dba_users可以显示所有数据库用户的详细信息;

通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限;

通过查询数据字典视图dba_tab_privs,可以显示用户具有的对象权限;

通过查询数据字典dba_col_privs可以显示用户具有的列权限;

通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色。

select * from system_privilege_map order by name;--Oracle的所有系统权限,一般是dba
select distinct privilege from user_tab_privs;--显示数据库中用户的对象权限
select * from user_sys_privs;--显示数据库中用户的系统权限
select * from dba_sys_privs where grantee='db_role';--显示数据库中角色的管理员权限
select * from role_sys_privs where role='db_role';--显示数据库中角色的系统权限
select * from dba_tab_privs where grantee='db_role';--显示数据库中角色的对象权限

权限是指执行特定类型sql命令或是访问其它方案对象的权利,包括系统权限和对象权限两种。

系统权限

系统权限介绍

系统权限是指执行特定类型sql命令的权利。它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有create table权限时,可以在其方案中建表,当用户具有create any table权限时,可以在任何方案中建表。Oracle提供了200多种

系统权限。 常用的有:

create session;--连接数据库
create user;--建用户
create table; --建表
create view; --建视图
create public synonym;--建同义词
create synonym synonym_name for db_user.table_name;
create procedure;--建过程、函数、包 create trigger 建触发器
execute any procedure;--执行任何过程
create cluster;--建簇

显示系统权限

Oracle提供了100多种系统权限,而且Oracle的版本越高,提供的系统权限就越多,我们可以查询数据字典视图

system_privilege_map;--可以显示所有系统权限。

授予系统权限

一般情况,授予系统权限是由dba完成的,如果用其他用户来授予系统权限,则要求该用户必须具有grant any privilege的系统权限。在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将该系统权限授给其他用户

回收系统权限

一般情况下,回收系统权限是dba来完成的,如果其它的用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限的选项(with admin option)。回收系统权限使用revoke来完成。 当回收了系统权限后,用户就不能执行相应的操作了,但是请注意,系统权限级联收回的问题?[不是级联回收!]

system --->ken --->tom

conn system/123456;

grant create session to ken with grant option;

conn ken/123456;

grant create session to tom;

用system执行如下操作:

revoke create session from ken; --请思考tom还能登录吗?

答案:能,可以登录

对象权限

对象权限介绍

指访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。比如smith用户要访问system.tb_Employee表(system:方案,tb_Employee:表)

常用的有:

alter 修改 delete 删除 select 查询 insert 添加

update 修改 index 索引 references 引用 execute 执行

显示对象权限

通过数据字段视图可以显示用户或是角色所具有的对象权限。视图为dba_tab_privs

conn system/123456;

select distinct privilege from dba_tab_privs;

select grantor, owner, table_name, privilege from dba_tab_privs where grantee='db_role';

1.授予对象权限

在oracle9i前,授予对象权限是由对象的所有者来完成的,如果用其它的用户来操作,则需要用户具有相应的(with grant option)权限,从oracle9i开始,dba用户(sys,system)可以将任何对象上的对象权限授予其它用户。授予对象权限是用grant命令来完成的。 对象权限可以授予用户,角色,和public。在授予权限时,如果带有with grant option选项,则可以将该权限转授给其它用户。但是要注意with grant option选项不能被授予角色。

1.test用户要操作system.tb_Employee表,则必须授予相应的对象权限

1). 希望test可以查询system.tb_Employee表的数据,怎样操作?

grant select on tb_Employee to test;

2). 希望test可以修改system.tb_Employee的表数据,怎样操作?

grant update on tb_Employee to test;

3). 希望test可以删除system.tb_Employee的表数据,怎样操作?

grant delete on tb_Employee to test;

4). 有没有更加简单的方法,一次把所有权限赋给test?

grant all on tb_Employee to test;

2.能否对test访问权限更加精细控制。(授予列权限)

1). 希望test只可以修改system.tb_Employee的表的sal字段,怎样操作?

grant update on tb_Employee(sal) to test;

2).希望test只可以查询system.tb_Employee的表的ename,sal数据,怎样操作?

grant select on tb_Employee(ename,sal) to test;

...

3.授予alter权限

如果test用户要修改system.tb_Employee表的结构,则必须授予alter对象权限

conn system/123456;

grant alter on tb_Employee to test;

当然也可以用sys来完成这件事。

4.授予execute权限

如果用户想要执行其它方案的包/过程/函数,则须有execute权限。比如为了让ken可以执行包dbms_transaction,可以授予execute权限。

conn system/123456;

grant execute on dbms_transaction to ken;

5.授予index权限

如果想在别的方案的表上建立索引,则必须具有index对象权限。如果为了让test可以在system.tb_Employee表上建立索引,就给其index的对象权限

conn system/123456;

grant index on system.tb_Employee to test;

6.使用with grant option选项

该选项用于转授对象权限。但是该选项只能被授予用户,而不能授予角色

conn system/123456;;

grant select on tb_Employee to test with grant option;

conn test/123456;

grant select on system.tb_Employee to jones;

回收对象权限

在oracle9i中,收回对象的权限可以由对象的所有者来完成,也可以用dba用户(sys,system)来完成。 这里要说明的是:收回对象权限后,用户就不能执行相应的sql命令,但是要注意的是对象的权限是否会被级联收回?【级联回收】

如:system--->test--->jones

conn system/123456;

revoke select on tb_Employee from test;

请大家思考,jones能否查询system.tb_Employee表数据。

答案:查不了了(和系统权限不一样,刚好相反)

收回用户系统权限

revoke system_privileges from db_user;

Oracle系列之权限的更多相关文章

  1. .Net程序员学用Oracle系列(2):准备测试环境

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.创建说明 1.1.为什么要创建的测试环境? 1.2.了解 Oracle 实例的默认用户 2.创建环境 2.1.创建基本环境 ...

  2. .Net程序员学用Oracle系列(7):视图、函数、过程、包

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...

  3. .Net程序员学用Oracle系列(8):触发器、任务、序列、连接

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.触发器 1.1.创建触发器 1.2.禁用触发器 & 启用触发器 & 删除触发器 2.任务 2.1.DBMS_ ...

  4. .Net程序员学用Oracle系列(11):系统函数(下)

    1.聚合函数 1.1.COUNT 函数 1.2.SUM 函数 1.3.MAX 函数 1.4.MIN 函数 1.5.AVG 函数 2.ROWNUM 函数 2.1.ROWNUM 函数简介 2.2.利用 R ...

  5. .Net程序员学用Oracle系列(25):触发器详解

    1.触发器理论 1.1.触发器的应用场景 1.2.触发器的类型 1.3.DML 触发器的触发顺序 2.触发器实战 2.1.创建触发器 2.1.1.创建 DML 触发器 2.1.2.创建 DDL 触发器 ...

  6. .Net程序员学用Oracle系列(28):PLSQL 之SQL分类和动态SQL

    1.SQL 语句分类 1.1.分类方法及类型 1.2.数据定义语言 1.3.数据操纵语言 1.4.其它语句 2.动态 SQL 理论 2.1.动态 SQL 的用途 2.2.动态 SQL 的语法 2.3. ...

  7. .Net程序员学用Oracle系列(30):零碎补充、最后总结(The End)

    1.同义词 2.Flashback 技术 3.连接字符串的写法 4.转义字符 & 特殊运算符 5.文件类型 6.查看参数 & 修改参数 7.AWR 工具 8.学习方法 & 学习 ...

  8. .Net程序员学用Oracle系列(8):触发器、作业、序列、连接

    1.触发器 2.作业 2.1.作业调度功能和应用 2.2.通过 DBMS_JOB 来调度作业 3.序列 3.1.创建序列 3.2.使用序列 & 删除序列 4.连接 4.1.创建连接 4.2.使 ...

  9. Oracle系列:触发器、作业、序列、连接

    .Net程序员学用Oracle系列(8):触发器.作业.序列.连接   1.触发器 2.作业 2.1.作业调度功能和应用 2.2.通过 DBMS_JOB 来调度作业 3.序列 3.1.创建序列 3.2 ...

随机推荐

  1. ugui自制摇杆。

    珍爱生命,远离插件. 以上8个字,好好理解. 反正我是这么觉得. 我说的是unity,不是魔兽世界. 总有一天,我会一句一句写出属于自己的东西. 可以开始主题了.         如图所示,建立一个画 ...

  2. Java实战之02Hibernate-04多表映射

    十.多表映射 0.内容补充:数据完整性 作用:防止用户的误操作. 实体完整性:主键.用于确定表中唯一的一条记录. 域完整性:表中的字段. 数据类型约束: 非空约束: 唯一约束: 参照完整性: 多表设计 ...

  3. 01_SpringMVC流程架构图

    [组件说明] 以下组件通常使用框架提供实现: 1.DisPatcherServlet:前端控制器(不需要程序员开发) 用户请求到达前端控制器,它相当于MVC模式中的C(Controller),Disp ...

  4. Cabarc Overview (Microsoft TechNet)

    Original Link:  Cabarc Overview Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Ser ...

  5. Mac 系统下安装 MySql

    Mac原生没有带MySql,想要使用需要自己去安装. 下载. 首先去mysql官网下载安装包. 由于现在mysql对企业有服务,所以有所谓社区版(community)和企业版(enterprise), ...

  6. Asp.net Gridview导出Excel

    前台页面放一个GridView什么的就不说了,要注意的是在 <%@ Page Language="C#" AutoEventWireup="true" C ...

  7. ECSHOP模板设置,前台英文后台中文,无需复制

    很多做英文站的朋友 只想让前台显示为英文,后台依就保持中文.这个要如何来做呢?网上也看到类似文章,好像还要进行目录复制与覆盖.我下面这个方法更简单,无需复制. 第一步: 通过后台设置实现前台英文.进入 ...

  8. Linux私房菜——防火墙部分笔记

    #1 分类 对单一主机,主要有两种:数据包过滤Netfilter和依据服务软件分析的TCP Wrapper. 对区域型防火墙来说,即安装防火墙的主机充当路由器的角色.防火墙类型主要有两种:数据包过滤N ...

  9. 3224: Tyvj 1728 普通平衡树

    Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相 ...

  10. splay学习笔记

    伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(log n)内完成插入.查找和删除操作.(来自百科) 伸展树的操作主要是 –rotate(x) 将x旋转到x的父亲的位置 voi ...