1. 权限的作用
  2. 限制用户对数据的访问

    权限的分类

    1. 系统权限:能够存取数据库的权限

  3. 2. 对象权限:操作数据库对象的内容

  4. 系统权限 
     1.1 如何创建用户:

    SQL> create user test default tablespace users identified by test;用户已创建。

    1.2 数据库中的系统权限

    SQL> desc system_privilege_map;Name                                   Null?    Type----------------------------------------------------------------- -------- --------------------------------------------PRIVILEGE                               NOT NULL NUMBERNAME                                   NOT NULL VARCHAR2(40)PROPERTY                               NOT NULL NUMBERSQL> select privilege,name,property from system_privilege_map;PRIVILEGE NAME                       PROPERTY
    ---------- ---------------------------------------- -----------3 ALTER SYSTEM                      0-4 AUDIT SYSTEM                      0-5 CREATE SESSION                     0-6 ALTER SESSION                     0-7 RESTRICTED SESSION                     0

    1.3 查看某个用户拥有的系统权限

    SQL> select username,privilege,admin_option from user_sys_privs;USERNAME               PRIVILEGE                ADM
    ------------------------------ ---------------------------------------- ---
    SYS                   AUDIT ANY                NO
    SYS                   DROP ANY INDEX                NO
    SYS                   CREATE ANY CLUSTER            NO
    SYS                   ALTER ANY TABLE                NO。。。。。。。。。。。。。。。。。。。。。。。。。
    159 rows selected.

    1.4 系统权限的授予与回收
       sys授予select any table给scott

    SQL> conn /as sysdba
    已连接。
    SQL> grant select any table to scott;--任何普通用户下的表,scott都可以访问SQL> select USERNAME,PRIVILEGE from user_sys_privs;USERNAME                       PRIVILEGE
    ------------------------------ ----------------------------------------
    SCOTT                          CREATE SYNONYM
    SCOTT                          CREATE VIEW
    SCOTT                          UNLIMITED TABLESPACE
    SCOTT                          SELECT ANY TABLESQL> conn scott/tiger已连接。SQL> select count(*) from oe.CUSTOMERS;COUNT(*)
    ----------319SQL> select count(*) from hr.employees;COUNT(*)
    ----------107

    sys收回select any table给scott

    SQL> conn /as sysdba
    已连接。
    SQL> revoke select any table from scott;撤销成功。SQL> conn scott/tiger
    已连接。
    SQL> select USERNAME,PRIVILEGE from user_sys_privs;USERNAME                       PRIVILEGE
    ------------------------------ ----------------------------------------
    SCOTT                          CREATE SYNONYM
    SCOTT                          CREATE VIEW
    SCOTT                          UNLIMITED TABLESPACESQL> select count(*) from hr.employees;
    select count(*) from hr.employees*
    第 1 行出现错误:
    ORA-00942: 表或视图不存在

    1.5 权限的转授
         系统权限不能被级联回收

    SQL> conn /as sysdba
    已连接。
    SQL> grant select any table to scott ;授权成功。SQL> conn scott/tiger
    已连接。
    SQL> grant select any table to hr;
    grant select any table to hr
    *
    第 1 行出现错误:
    ORA-01031: 权限不足SQL> conn /as sysdba
    已连接。
    SQL> revoke select any table from scott;撤销成功。SQL> grant select any table to scott with admin option;--把select any table的授予权限给scott授权成功。SQL> conn scott/tiger
    已连接。
    SQL> grant select any table to hr;授权成功。SQL> conn hr/hr已连接。SQL> select count(*) from oe.customers;COUNT(*)
    ----------319
    

    SQL> conn /as sysdba
    已连接。
    SQL> revoke select any table from scott;

    撤销成功。

    SQL> conn scott/tiger
    已连接。
    SQL> select count(*) from oe.customers;
    select count(*) from oe.customers
    *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在

    SQL> conn hr/hr
    已连接。
    SQL> select count(*) from oe.customers;

    COUNT(*)
    ----------
    319

  5. 对象权限

    对象权限:在某个数据库对象上的权限

    4.1 在某个表上的所有对象权限:

    conn scott/tigergrant all on emp to hr;conn hr/hrSQL> select GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE from user_tab_privs where table_name='EMP';GRANTEE OWNER  TABLE_NAME  GRANTOR PRIVILEGE
    ------- ------ ----------- ------- --------------------
    HR      SCOTT  EMP         SCOTT   ALTER
    HR      SCOTT  EMP         SCOTT   DELETE
    HR      SCOTT  EMP         SCOTT   INDEX
    HR      SCOTT  EMP         SCOTT   INSERT
    HR      SCOTT  EMP         SCOTT   SELECT
    HR      SCOTT  EMP         SCOTT   UPDATE
    HR      SCOTT  EMP         SCOTT   REFERENCES
    HR      SCOTT  EMP         SCOTT   ON COMMIT REFRESH
    HR      SCOTT  EMP         SCOTT   QUERY REWRITE
    HR      SCOTT  EMP         SCOTT   DEBUG
    HR      SCOTT  EMP         SCOTT   FLASHBACK

    4.2 对象权限的授予与回收

    授予单个权限:SQL> show user
    USER 为 "SCOTT"
    SQL> grant select on emp to hr;授权成功。SQL> revoke select on emp from hr;撤销成功。针对于某个列:SQL> grant update(sal) on emp to hr;SQL> revoke update on emp from hr;撤销成功。
    

    4.3 查看对象权限:
    SQL> se
    SQL> col OWNER for a6
    SQL> col TABLE_NAME for a15
    SQL> col GRANTOR for a7
    SQL> col PRIVILEGE for a20SQL> show userUSER 为 "SCOTT"SQL> select grantee,owner,table_name,privilege from user_tab_privs;GRANTEE  OWNER    TABLE_NAME    PRIVILEGE
    -------- ------ --------------- --------------------
    HR     SCOTT    EMP        FLASHBACK
    HR     SCOTT    EMP        DEBUG
    HR     SCOTT    EMP        QUERY REWRITE
    HR     SCOTT    EMP        ON COMMIT REFRESH
    HR     SCOTT    EMP        REFERENCES
    HR     SCOTT    EMP        INSERT
    HR     SCOTT    EMP        INDEX
    HR     SCOTT    EMP        DELETE
    HR     SCOTT    EMP        ALTER9 rows selected.
    GRANTEE:接受权限的用户GRANTOR:授出权限的用户

    4.4 对象权限的转授
    SQL> show user
    USER 为 "HR"SQL> revoke update on employees from scott;撤销成功。SQL> grant update on employees to scott with grant option;授权成功。SQL> show user
    USER 为 "SCOTT"SQL> grant update on hr.employees to oe;授权成功。SQL> show user
    USER 为 "SCOTT"SQL> update hr.employees set salary=salary+100;已更新107行。SQL> roll
    回退已完成。
    SQL> conn oe/oe
    已连接。
    SQL> update hr.employees set salary=salary+100;已更新107行。SQL> rollback;回退已完成。

    4.5 对象权限的级联回收

    conn hr/hrgrant update on employees to scott with grant option;conn scott/tigergrant update on hr.employees to oe;SQL> update hr.employees set salary=salary+100;已更新107行。SQL> rollconn oe/oeSQL> update hr.employees set salary=salary+100;已更新107行。SQL> rollconn hr/hrrevoke update on employees from scott;conn scott/tigerSQL> update hr.employees set salary=salary+100;
    update hr.employees set salary=salary+100*
    第 1 行出现错误:
    ORA-01031: 权限不足conn oe/oeSQL> update hr.employees set salary=salary+100;--对象权限会被级联回收
    update hr.employees set salary=salary+100*
    第 1 行出现错误:
    ORA-01031: 权限不足

  6. 角色
    5.1 角色:角色是一组权限(包含对象权限和系统权限)的集合
    5.2 角色作用:

    比较容易的权限管理

    动态的权限管理

    选择权限的可获得性

    可通过操作系统授予
    5.3. 创建角色并给它授权

    SQL> conn /as sysdba
    已连接。
    SQL> create role r1;角色已创建。SQL> grant select any table to r1;授权成功。SQL> grant update on scott.emp to r1;授权成功。

    查看角色中有哪些系统权限:

    SQL> select PRIVILEGE from role_sys_privs where role='R1';PRIVILEGE
    --------------------
    SELECT ANY TABLE

    查看角色中的对象权限:

    SQL> select OWNER,TABLE_NAME,PRIVILEGE from role_tab_privs where role='R1';OWNER  TABLE_NAME      PRIVILEGE
    ------ --------------- --------------------
    SCOTT  EMP             UPDATE

    5.4 角色授予与回收

    SQL> grant r1 to hr;--hr拥有角色r1中所有的权限授权成功。SQL> conn hr/hr
    已连接。
    SQL> select count(*) from oe.customers;COUNT(*)
    ----------319SQL> update scott.emp set sal=sal+100;已更新14行。SQL> roll
    回退已完成。SQL> conn /as sysdba
    已连接。
    SQL> revoke r1 from hr;--r1中所有的权限都从hr中回收撤销成功。SQL> conn hr/hr
    已连接。
    SQL> select count(*) from oe.customers;
    select count(*) from oe.customers*
    第 1 行出现错误:
    ORA-00942: 表或视图不存在SQL> update scott.emp set sal=sal+100;
    update scott.emp set sal=sal+100*
    第 1 行出现错误:
    ORA-00942: 表或视图不存在

    5.5 查看当前用户有哪些角色

    SQL> select GRANTED_ROLE from user_role_privs;GRANTED_ROLE
    ------------------------------
    CONNECT
    PLUSTRACE
    RESOURCE

    角色中的权限,在user_sys_privsH和user_tab_privs中看不到的

    SQL> select GRANTED_ROLE from user_role_privs;GRANTED_ROLE
    ------------------------------
    CONNECT
    PLUSTRACE
    RESOURCESQL> conn /as sysdba
    已连接。SQL> select privilege from role_sys_privs where role='CONNECT';PRIVILEGE
    --------------------
    CREATE SESSIONSQL> select PRIVILEGE from user_sys_privs;PRIVILEGE
    --------------------
    CREATE SYNONYM
    CREATE VIEW
    UNLIMITED TABLESPACECREATE SESSION这个系统权限在user_sys_privs中看不到

转载于:https://www.cnblogs.com/yaoweber/p/3932977.html

控制用户的访问之权限、角色【weber出品必属精品】相关推荐

  1. 全世界最详细的图形化VMware中linux环境下oracle安装(三)【weber出品必属精品】...

    数据库软件和数据库都建好了,基本上可以说完成90%的工作,但是美中不足的就是企业管理器还没有安装好,现在我们就开始安装企业管理器吧. 安装之前我们先将补丁给补上.补丁我们也是采用禁默安装.补丁:p83 ...

  2. 解决linux下oracle进入sqlplus环境中后退键显示^H、上下键无效与ctrl+l无法清屏等问题【weber出品必属精品】...

    习惯linux中上下键回退历史输入的人们肯定也希望sqlplus中也能实现相同的效果,可是不幸的是,sqlplus中不提供诸多方便的快捷键,这个时候我们就需要另外安装一个插件来实现这个想法. 这个插件 ...

  3. 使用DML语句【weber出品必属精品】

    DML语句包含以下语法: INSERT:往一个表中增加新行 DELETE:从一个表中删除掉现有的行 UPDATE:更改一个表中现有的行 INSERT语句 语法:INSERT INTO TABLE(CO ...

  4. 一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限...

    菜单权限是我们经常会遇到的权限,也是经常需要进行处理的权限,往往权限是通过控制菜单权限开始折腾起来的. 第一步:我的后台管理控制端,有一个叫模块配置的功能,这里集中配置,哪些模块可以用,哪些模块先锁定 ...

  5. chmod 是一条在Unix系统中用于控制用户对文件的权限的命令

    chmod 是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数.只有文件所有者和超级用户可以修改文件或目录的权限.可以使用绝对模式,符号模式指定文件的权 ...

  6. Citrix NetScaler Gateway:使用Smart Access实现根据源IP控制用户可访问的交付组

    一.导语 NetScaler Smart Access是NetSacler Gateway的一个高级功能.如果用户是通过NetScaler(ADC)访问应用或桌面,该功能可以限制用户的应用或者桌面的可 ...

  7. 前端学习(3041):vue+element今日头条管理-控制用户的访问权限

  8. Mysql 新建用户并且授权用户的访问数据库权限以及可以对数据的操作类型

    Mysql 5.6 -- 创建用户 CREATE USER 'joker'@'%' IDENTIFIED BY 'qweasd11';-- 授权用户访问的数据库以及权限 grant all privi ...

  9. linux控制命令使用限制,【L-shell】Linux 系统下 限制用户的活动目录,控制用户使用命令的权限。...

    1.前提: 安装yum 扩展源: 注:本人用的是CentOS 6.5,64位系统,所以下的是这个地址.(如果是其它版本或其他情况,参考下面的地址:) centos5 : 32位epel源下载地址: w ...

最新文章

  1. i5 11300H和i5 10300H 的区别
  2. PoweMock集成Spring-test 测试静态方法 禁用字节码验证 -noverify -XX:-UseSplitVerifier
  3. SQL分组处理气象数据及注意事项
  4. 关于局部变量在内存中的地址
  5. ORA-01033: ORACLE initialization or shutdown in progress
  6. 黑马商城项目源代码_Python学习路线图--Python框架与项目
  7. Java打造一款SSH客户端,已开源!
  8. html中写自增数字,CSS 小技巧:counter 实现有序列表编号自增
  9. 纯新手DSP编程--5.16--目标和主机设置
  10. 什么是NVMe?一篇文章理清它的前生今世
  11. 从需求出发来看关系模型与非关系模型–时代的变革
  12. 彩色数字图像处理基础
  13. yum安装docker指定版本
  14. 让我们自己来破解命运外挂999
  15. 《怦然心动》(Flipped) 观后感
  16. json csrf html5,Exploiting JSON CSRF
  17. 新浪短网址生成java_T.CN短网址 新浪T.CN短网址批量生成工具推荐
  18. Php公众号自定义菜单设置,教你设置微信公众号自定义菜单!,来看看吧
  19. MVC有哪几种过滤器?
  20. linux上好玩的东西

热门文章

  1. Appium使用Python运行appium测试的实例
  2. bzoj2751[HAOI2012]容易题(easy)
  3. Codeigniter 3 拓展HMVC
  4. 系统架构:Web应用架构的新趋势 前后端分离的想法
  5. js时间-价格-排序案例____冒泡排序实例
  6. Oracle建立全文索引详解
  7. Python 循环删除指定文件夹下所有的.longtian类型文件
  8. linux系统下nginx安装目录和nginx.conf配置文件目录
  9. Linux中一些常用的很巧妙的命令
  10. 《Python编程快速上手 让繁琐工作自动化》pdf