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


    语句

    解释

    Create user

    Creates a user(usually performed by a DBA)

    Grant

    Gives other users privileges to access the objects

    Create role

    Creates a collection of privileges, usually performed by a DBA

    Alter user

    Changes a user's password

    Revoke

    Removes privileges on an object from users

    通过数据字典查询

    数据字典视图

    描述

    dba_users

    用户

    dba_ts_quotas

    每个用户空间使用配额

    dba_profiles

    查询profile文件

    dba_sys_privs

    查询用户权限

    dba_roles

    查看角色

    ROLE_SYS_PRIVS

    授予角色的系统权限

    ROLE_TAB_PRIVS

    授予角色的表权限

    USER_ROLE_PRIVS

    授予用户的角色

    USER_SYS_PRIVS

    授予用户的系统权限

    USER_TAB_PRIVS_MADE

    用户对象上授予的权限

    USER_TAB_PRIVS_RECD

    授予用户的对象权限

    USER_COL_PRIVS_MADE

    用户某列上授予的对象权限

    USER_COL_PRIVS_RECD

    授予用户某列上的对象权限

    权限管理

    • Oracle系统权限与对象权限的划分;
    • 用户的授权操作GRANT与权限回收REVOKE操作;

     

    权限分类

    所有的权限应该由DBA进行控制,在SQL语句规范之中针对于权限的控制提供了两个核心的操作命令:

    • GRANT(授权)
    • REVOKE(回收权限)

    系统权限

    进行数据库资源操作的权限,例如:创建数据表、索引等权限;

    系统权限主要指的是资源操作的权限

    系统权限是在数据库中执行某种特定操作的权利,系统权限并不针对某个特定的对象,而是针对整个数据库范围。

    系统权限针对的是全局用户

    例如:数据库管理员(DBA)是数据库系统中级别最高的用户,它拥有一切的系统权限以及各种资源的操作能力。

    在Oracle中有100多种的系统权限,并且不同的数据库版本相应的权限数也会增加。

    系统规定用户使用数据库的权限。(系统权限是对用户而言)

    对象权限

      • TABLEVIEW,Sequence 等为对象,在对象上的权限为对象权限,这个权限不是全局的.系统权限是全局的.
      • 每种对象的权限都不同
      • 对象宿主拥有在对象上全部的权限
      • 对象宿主能授予对象权限给其他用户
      • 对象权限指的是数据库之中某一个对象所拥有的权限,
      • 即:可以通过某一个用户的对象权限,让其他用户来操作本用户中的所有授权的对象。

      维护数据库中对象的能力,即:由一个用户操作另外一个用户的对象。

      对象权限指的是数据库之中某一个对象所拥有的权限

      即:可以通过某一个用户的对象权限,让其他用户来操作本用户中的所有授权的对象。

      Oracle之中一共定义了八种对象权限,分别是:SELECTINSERTUPDATEDELETEEXECUTEALTERINDEXREFERENCES

     

    系统权限

    系统权限分类:

    DBA

    拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构

    RESOURCE

    拥有Resource权限的用户只可以创建对象,不可以创建数据库结构

    CONNECT

    拥有Connect权限的用户只可以登录oracle,不可以创建对象,不可以创建数据库结构

    对于普通用户

    授予connect, resource权限。

    对于DBA管理用户

    授予connect,resource, dba权限

    用的系统权限有:

    CREATE SESSION  

    连接到数据库上

    CREATE SEQUENCE  

    创建序列,序列是一系列数字,通常用来自动填充主键列

    CREATE SYNONYM  

    创建同名对象

    CREATE TABLE  

    创建表

    CREATE ANY TABLE  

    在任何模式中创建表

    DROP TABLE  

    删除表

    DROP ANY TABLE   

    删除任何模式中的表

    CREATE PROCEDURE

     创建存储过程

    EXECUTE ANY PROCEDURE  

    执行任何模式中的存储过程

    CREATE USER  

    创建用户

    DROP USER   

    删除用户

    CREATE VIEW

    创建视图

     

    为用户授权

    • 系统权限只能由DBA用户授出:sys,system(最开始只能是这两个用户)
    • 普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。
    • 授权语法:

    GRANT 权限 , …

    TO [用户名 , … | 角色名 , …. | PUBLIC]

    [WITH ADMIN OPTION] ;

    • 语法解释:

    权限:

    主要指的是各个系统权限

    TO:

    设置授予权限的用户、角色或者是使用PUBLIC将此权限设置为公共权限;

    WITH ADMIN OPTION:

    将用户授予的权限继续授予其他用户则得到的权限可以传递。

     

    • 范例

    c##wendy用户授予CREATE SESSION权限,这样用户就可以登录了.

    GRANT CREATE SESSION TO c##wendy ;

    c##wendy用户授权;

    12C以前的oracle版本在授权后需要重新登录,只有登录时会取权限。

    12C是动态取得权限.

    GRANT CREATE TABLE , CREATE SEQUENCE , CREATE VIEW TO c##wendy WITH ADMIN OPTION ;

    利用c##wendy用户登录,而后将创建表、以及创建序列的权限授予c##gaga用户

    GRANT CREATE TABLE , CREATE SEQUENCE TO c##gaga ;

     

    撤消权限

    • 撤消权限语法:

    REVOKE 权限 , ... FROM 用户名 ;

    • 范例

    c##wendy用户的CREATE VIEWCREATE TABLE权限回收

    REVOKE CREATE TABLE , CREATE VIEW FROM c##wendy;

    通过c##wendy用户回收c##gaga用户的CREATE SEQUENCE权限

    REVOKE CREATE SEQUENCE FROM c##gaga ;

    说明:

    1)如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。

    2)系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

     

    对象权限

    • Oracle之中一共定义了八种对象权限,分别是:SELECTINSERTUPDATEDELETEEXECUTEALTERINDEXREFERENCES

     

    对象权限

    表(Table

    序列(Sequence

    视图(View

    子程序(Procedure

    查询(SELECT)

     

    增加(INSERT)

     

     

    更新(UPDATE)

     

     

    删除(DELETE)

     

     

    执行(EXECUTE)

     

     

     

    修改(ALTER)

     

    索引(INDEX)

     

     

    关联(REFERENCES)

     

     

     

     

    授予对象权限

    • GRANT 对象权限 | ALL [( , ...)]

    ON 对象

    TO [用户名 | 角色名 | PUBLIC]

    [WITH GRANT OPTION] ;

    语法组成:

    对象权限

    指的是表所列出的权限标记,如果设置为ALL表示所有对象权限;

    ON

    要授予权限的对象名称;

    TO

    将此权限授予的用户名称或角色名称,如果设置为PUBLIC表示为公共权限;

    WITH GRANT OPTION:

    允许授权用户继续授权其他用户。

    • 范例

    c##wendy用户授予c##scott用户dept表的查询以及增加权限

    GRANT SELECT , INSERT ON c##scott.dept TO c##wendy ;

    c##scott.dept数据表更新部门编号(dname)的权限授予c##wendy用户

    GRANT UPDATE(dname) ON c##scott.dept TO c##wendy ;

    允许系统上的所有用户从wendyt表中查询数据:

    GRANT select

    ON         wendy.t

    TO          PUBLIC;

    将表的操作权限授予全体用户:

    grant all on product to public//public 表示所有的用户

    从数据字典中查询当前用户授权权限.

    SELECT * FROM user_tab_privs_recd;

     

    回收对象权限

    • 如果要对对象权限进行回收,则继续使用REVOKE语句完成。

    REVOKE [权限 , .... | ALL]

    ON 对象

    FROM [用户 , .... | 角色 | PUBLIC] ;

    • 回收c##scott.dept上的相关权限

    REVOKE SELECT , INSERT ON c##scott.dept FROM c##wendy ;

    REVOKE UPDATE ON c##scott.dept FROM c##wendy ;

    如果取消某个用户的对象权限,那么对于这个用户使用WITH GRANT OPTION授予权限的用户来说,同样还会取消这些用户的相同权限,也就是说取消授权时级联的。

     

     

  • 相关阅读:
    UE 实现英雄联盟手游 备注名文本超框自动截断
    Qt使用msvc编译MySQL驱动
    Qt5打包发布的大小也太坑爹了
    查看迅雷等资源共享工具正在上传的文件
    bugfree安装过程和配置
    文件上传后台和前台代码(文件下载也是)
    SqlHelper.cs的介绍
    站点添加联系QQ留言(阿里巴巴应该也类似)
    http://blog.csdn.net/songlipeng2003/article/details/1513456
    转(学习中)
  • 原文地址:https://www.cnblogs.com/thescentedpath/p/GRANTREVOKE.html
Copyright © 2020-2023  润新知