专栏首页Java学习网Oracle 权限(grant、revoke)--Java学习网

Oracle 权限(grant、revoke)--Java学习网

数据库版本: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;

本文分享自微信公众号 - Java学习网(javalearns),作者:javalearns

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Oracle用户管理

    —Oracle学习 –oracle管理系统介绍(客户端和服务器端的交互模式) –oracle数据库的数据管理(增删改查 查询) –oracle账户管理 ...

    葆宁
  • OracleDBA之用户管理

    再分享一下Oracle中对用户的管理,以下这些东西是我的麦库上存的当时学Oracle的学习笔记今天拿出来和大家分享一下,转载请注明出处,下面用的Oracle的...

    lizelu
  • 关于WITH ADMIN OPTION和WITH GRANT OPTION

    最近在学习SQL,关于WITH ADMIN OPTION和WITH GRANT OPTION有什么区别呢。

    start.zhou
  • Oracle 用户、对象权限、系统权限

    用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作

    Leshami
  • Oracle数据库的安全性措施概述

      Oracle的安全措施主要有三个方面,一是用户标识和鉴定;二是授权和检查机制;三是审计技术(是否使用审计技术可由用户灵活选择);除此之外,Oracle还允许...

    用户1148526
  • Oracle 用户、角色管理简介

    3)DEFAULT TABLESPACE testtbs001:指定在用户方案(schema)中创建的对象的默认表空间为testtbs001

    授客
  • oracle-系统权限管理

    The old version need to grant space permission grant unlimited in tablespace to ...

    eadela
  • 新特性解读 | 部分权限回收功能的说明

    MySQL ACE,华为云MVP,专注于 Oracle、MySQL 数据库多年,Oracle 10G 和 12C OCM,MySQL 5.6,5.7,8.0 O...

    爱可生开源社区
  • oracle数据库安全,事务机制,触发器和存储过程

    一、数据库安全机制 如果任何用户都可以随便查看和操作你的数据,那么数据的安全性将不复存在,可以通过限制用户操作权限防止数据被窃取、读脏和篡改。 1、创建用户 u...

    lonelydawn

扫码关注云+社区

领取腾讯云代金券