200 ? "200px" : this.width)!important;}
-->

数据库版本:11GR2

一、介绍

  在oracle中没有其他数据库系统中的数据库的概念,对象都是创建在用户下。当前用户具有当前用户下所有对象的所有权限无论该对象是否是当前用户所创建。举个简单例子创建一个用户授予该用户连接权限,然后用管理员用户在该用户下创建一张表,该用户可以删除管理员在该用户下创建的表。

二、权限

权限主要可以分成三类:系统权限、角色、对象权限。角色是一类权限的分组。

1.系统权限

系统权限其实就是用户在当前用户架构下所具有的权限。在11g中系统权限有200个,比如create table,UNLIMITED TABLESPACE等。

查询当前用户拥有的系统权限:

SELECT * FROM user_sys_privs;

2.角色

角色其实就是一类权限的分组,所以给用户分配角色其实也是在给用户分配权限。在oracle中有三个比较常用的角色。对于一般不是很严格的系统可以授予开发用户CONNECT、RESOURCE角色权限即可。

DBA:该角色具有数据库所有的权限。

CONNECT:该角色具有连接数据库的权限,和create session的权限一样。

RESOURCE:该角色是应用程序开发角色,具有如下权限

查询当前用户拥有的角色:

SELECT * FROM USER_ROLE_PRIVS;

3.对象权限

对象权限指的是其它拥有用户的对象的权限。其它用户对象的权限包括:SELECT,DELETE,UPDATE,ALTER,INSERT,INDEX,REFERENCES,FLASHBACK,DEBUG,QUERY REWRITE,ON COMMIT REFRESH;注意其它用户对象的权限没有drop的权限。

查询当前用户拥有的对象权限:

SELECT * FROM USER_TAB_PRIVS;

当前用户chenmh拥有用户zhang下student表的所有权限。

三、grant授权

1.授予用户connect、resource角色权限。一般创建应用程序开发用户可以授予这两个角色的权限。

GRANT CONNECT,RESOURCE TO zhang;

2.授予用户chenmh用户zhang下person表的SELECT,DELETE,UPDATE,INSERT权限,授予具体的对象权限是对于权限严格控制的一种方案。

GRANT SELECT,DELETE,UPDATE,INSERT ON zhang.person TO CHENMH ;

3.授予用户chenmh用户zhang下person表的所有权限

GRANT ALL PRIVILEGES ON zhang.person to chenmh;

grant权限图表:

四、REVOKE回收权限

1.回收角色权限

REVOKE CONNECT,RESOURCE FROM chenmh;

2.回收系统权限

REVOKE CREATE FROM chenmh;

3.回收用户对象权限,回收zhang用户下person表的所有权限,如果是单个授予的权限需要单个的收回

REVOKE ALL PRIVILEGES ON zhang.person FROM chenmh;

revoke图表:

五、批量操作

1.批量授予权限,授予用户chenmh拥有zhang下所有表的增删改查权限。生产批量执行sql

SELECT 'GRANT SELECT,DELETE,UPDATE,INSERT ON '||OWNER||'.'||TABLE_NAME||' TO CHENMH;' FROM dba_tables WHERE OWNER='ZHANG';

如果要查询其它对象可以查询dba_objects表。

2.批量收回系统权限,收回用户chenmh的所有系统权限

SELECT 'REVOKE '||PRIVILEGE||' FROM CHENMH;'  FROM DBA_SYS_PRIVS WHERE GRANTEE='CHENMH';

将拼接的sql复制出来执行查询。

3.批量收回角色权限

SELECT 'REVOKE '||GRANTED_ROLE||' FROM CHENMH;' FROM DBA_ROLE_PRIVS WHERE GRANTEE='CHENMH';

4.批量收回用户对象权限,收回用户chenmh在架构zhang下的所有权限

SELECT 'REVOKE '||PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME||' FROM CHENMH;' FROM DBA_Tab_Privs WHERE GRANTEE='CHENMH' AND OWNER='ZHANG'
ORDER BY TABLE_NAME,PRIVILEGE;

备注:oracle用户的视图权限比较特殊,需要单独授予resource角色不包含创建视图的权限。可以执行

grant create view to chenmh;

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

Oracle 权限(grant、revoke)的更多相关文章

  1. [SQL] 简单新建(create)删除(drop\delete)权限(grant/revoke)修改(set\update)

    一.前言 说起来 数据库(Structured Query Language),本站写过很多类似文章. 如: Mysql创建.删除用户 phpMyAdmin 登陆需要密码 记一次裸迁 MySQL 经历 ...

  2. SQL Fundamentals || DCL(Data Control Language) || 系统权限&对象权限管理(GRANT&REVOKE)

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  3. Oracle 用户权限 Grant

    用户的权限来自系统权限和对象权限 一.系统权限 3个索引权限 Grant CREATE ANY INDEX to User_Name://创建索引 Grant ALTER ANY INDEX to U ...

  4. MYSQL用户权限管理(Grant,Revoke)

    MySQL可以为不同的用户分配严格的.复杂的权限.这些操作大多都可以用SQL指令Grant(分配权限)和Revoke(回收权限)来实现. Grant可以把指定的权限分配给特定的用户,如果这个用户不存在 ...

  5. oracle权限语句大全

    Oracle 系统默认的几个用户: sys --------网络管理用户,具有最高数据库管理权限 system------本地管理用户,权限次于sys scott-------普通用户,默认是锁住的( ...

  6. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

  7. oracle权限

    Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户publi ...

  8. 十七、oracle 权限

    一.介绍这一部分我们主要看看oracle中如何管理权限和角色,权限和角色的区别在哪里.当刚刚建立用户时,用户没有任何权限,也不能执行任何操作.如果要执行某种特定的数据库操作,则必须为其授予系统的权限: ...

  9. oracle 权限

    一.介绍这一部分我们主要看看oracle中如何管理权限和角色,权限和角色的区别在哪里.当刚刚建立用户时,用户没有任何权限,也不能执行任何操作.如果要执行某种特定的数据库操作,则必须为其授予系统的权限: ...

随机推荐

  1. javascript面向对象(三)

    主要内容: 利用原型链的方式实现继承: 原型继承的特点:即继承了父类的模板,也继承了父类的原型对象. 类继承:只继承模板(借用构造函数的方式继承). 利用call.apply方法实现: 混合继承: 扩 ...

  2. jsp中,个别乱码进行转码操作

    来自大神 if(xh!=null && xh!=""){ xhmc =new String(xh.getBytes("ISO-8859-1"), ...

  3. vs快捷键visual studio

    网上抄的.记录下来.没全试过!强大的VS,真的喜欢! Shift+Alt+Enter: 切换全屏编辑 Ctrl+B,T / Ctrl+K,K: 切换书签开关Ctrl+B,N / Ctrl+K,N: 移 ...

  4. java单例模式实现方式

    Singleton 模式要求一个类有且仅有一个实例,并提供一个全局访问点. Singleton模式 是一种职责型模式.因为我们创建了一个对象,这个对象扮演了独一无二的角色,在这个单独的对象实例中,它集 ...

  5. Codeforces Round #379 (Div. 2) Analyses By Team:Red & Black

    A.Anton and Danik Problems: 给你长度为N的,只含'A','D'的序列,统计并输出何者出现的较多,相同为"Friendship" Analysis: lu ...

  6. C#引用类型(class)和值类型(struct)

    1. 值参数 当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法.被调用的方法不传内存中实参的值,所以使用值参数时,可以保证实际值是安全的. using System; ...

  7. How to copy remote computer files quickly to local computer

    if we want copy file from VM(Remote VM) to local computer. Always can not easy copy file so easy. no ...

  8. C#实现按键精灵的'找图' '找色' '找字'的功能

    背景:游戏辅助功能通常使用按键精灵编写脚本,按键精灵的最大卖点就是能够找到画面中字,图,色,这对于模拟用户鼠标操作至关重要,这能找到道具,找到血量,实现自动打怪,自动补血,自动买卖道具,博主闲来无聊, ...

  9. Only女装首页HTML+CSS代码实现

    这是效果图,因为太长,缩略了. 在学习HTML和CSS基础的时候做的.自己切图下来做的. 没有什么技术含量. 源代码和图片我放在github上了, 上个链接吧: https://github.com/ ...

  10. LightOJ Beginners Problems 部分题解

    相关代码请戳 https://coding.net/u/tiny656/p/LightOJ/git 1006 Hex-a-bonacci. 用数组模拟记录结果,注意取模 1008 Fibsieve's ...