Oracle 权限(grant、revoke)

时间:2023-01-31 23:25:39

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

数据库版本:11GR2

一、介绍

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

二、权限

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

1.系统权限

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

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

SELECT * FROM user_sys_privs;

Oracle 权限(grant、revoke)

2.角色

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

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

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

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

Oracle 权限(grant、revoke)

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

SELECT * FROM USER_ROLE_PRIVS;

Oracle 权限(grant、revoke)

3.对象权限

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

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

SELECT * FROM USER_TAB_PRIVS;

Oracle 权限(grant、revoke)

当前用户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 ;

Oracle 权限(grant、revoke)

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

GRANT ALL PRIVILEGES ON zhang.person to chenmh;

grant权限图表:

Oracle 权限(grant、revoke)

Oracle 权限(grant、revoke)

四、REVOKE回收权限

1.回收角色权限

REVOKE CONNECT,RESOURCE FROM chenmh;

2.回收系统权限

REVOKE CREATE FROM chenmh;

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

REVOKE ALL PRIVILEGES ON zhang.person FROM chenmh;

revoke图表:

Oracle 权限(grant、revoke)

Oracle 权限(grant、revoke)

五、批量操作

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

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

Oracle 权限(grant、revoke)

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

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

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

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

Oracle 权限(grant、revoke)

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 权限(grant、revoke)

备注: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. Ajax基础之封装3

    今天接着我们上篇博文的栗子,现在我来扩大一下需求,之前是点击按钮取出新闻,现在要实现每隔一段事件进行新闻的更新.这个时候,肯定是加一个定时器,然后每隔一段事件,再进行一次Ajax请求,既然要经常用到A ...

  2. html5 js os build

    1.NodeJS6.6 install   https://nodejs.org/en/ c:\nodejs>npm install -g grunt-cliC:\Users\police\Ap ...

  3. java希尔排序

    java希尔排序 1.基本思想: 希尔排序也成为"缩小增量排序",其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插 ...

  4. javascript之BOM事件注册和案例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 严重&colon; A child container failed during start

    四月 20, 2019 4:54:28 下午 org.apache.coyote.AbstractProtocol init 信息: Initializing ProtocolHandler [&qu ...

  6. Confluence 6 升级中的一些常见问题

    升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份.不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence.  在升级过程中 ...

  7. 项目方说性能达到百万TPS,如何测试它的可信度?

    项目方说性能达到百万TPS,如何测试它的可信度? 应用系统性能提升的关键在于运维端的接入管理模型(AAA,认证 Authentication.授权 Authorization.计费 Accountin ...

  8. JSON中JObject和JArray的修改

    一.JObject 和JArray的添加.修改.移除 1.先添加一个json字符串,把json字符串加载到JObject中,然后转换成JObject.根据索引修改对象的属性值,移除属性,添加属性 us ...

  9. angular之service、factory预provider区别

    昨晚项目组做了angular分享,刚好有讨论到这个问题.虽然许久不做前端开发,但是兴趣所致.就查阅了下资料,以便后续需要使用 自己的理解:service是new出来的,factory是直接使用就能获得 ...

  10. api&period;setFrameGroupIndex

    设置 frame 组当前可见 frame setFrameGroupIndex({params}) params name: 类型:字符串 默认值:无 描述:frame 组名字 index: 类型:数 ...