暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T GRANT

墨天轮 2019-10-12
1056

GRANT

功能描述

将系统权限或角色授予给用户或其他角色。

SYS用户对象的权限在没有授予用户或角色时,用户不可以将SYS用户对象的权限授予其他用户或角色。

注意事项

  • 如果是授权系统权限,执行该语句的用户需要满足如下条件之一:
    • 已授权该系统权限,并有WITH ADMIN OPTION属性。
    • 已授权GRANT ANY PRIVILEGE系统权限。
  • 如果是授予角色,执行该语句的用户需要满足如下条件之一。
    • 已授予该角色,并有WITH ADMIN OPTION属性。
    • 已授权GRANT ANY ROLE系统权限。
    • 是该角色的创建者。
  • 当前用户将自己对象的对象权限授予给别的用户时,不需要GRANT相关权限。
  • 普通用户被赋予GRANT ANY ROLE权限,可以回收GAUSSDBA权限。如果执行误操作将GAUSSDBA权限收回,需要登录每个节点,重新给GAUSSDBA赋权限。

语法格式

GRANT { system_privilege_name | role_name | [ ALL] PRIVILEGES } [ , ... ] TO grantee [ WITH ADMIN OPTION ]
  • grantee 子句:
    { user_name | role_name } [ , ... ] }
GRANT { object_privilege_name | [ ALL ] PRIVILEGES } [, ...] ON schema.object_name TO grantee [ WITH GRANT OPTION ]
  • object_privilege_name 子句:
    { SELECT | UPDATE | DELETE | INSERT | ALTER | INDEX | EXECUTE | READ | REFERENCES } [, ... ] }
  • grantee 子句:
    { user_name | role_name } [ , ... ] }

参数说明

  • system_priviege_name

    系统权限名。系统目前支持的系统权限及角色或用户对权限的拥有情况如下表所示,其中“Y”表示角色或用户拥有此权限,“-”表示角色或用户无此权限。

    表1 系统权限矩阵

    系统权限

    角色是否拥有此权限

    用户是否拥有此权限

    操作类型

    所需权限

    权限说明

    DBA

    RESOURE

    CONNECT

    SYS

    GAUSSDBA

    PUBLIC

    创建连接

    CREATE SESSION

    新创建的用户如果需要连接数据库,需要授权此权限。

    Y

    -

    Y

    Y

    Y

    -

    创建用户

    CREATE USER

    创建用户时,需要被授予CREATE USER权限。

    Y

    -

    -

    Y

    Y

    -

    创建角色

    CREATE ROLE

    创建角色时,需要被授予CREATE ROLE权限。

    Y

    -

    -

    Y

    Y

    -

    创建表空间

    CREATE TABLESPACE

    创建表空间时,需要被授予CREATE TABLESPACE权限。

    Y

    -

    -

    Y

    Y

    -

    创建表

    CREATE TABLE

    创建本schema中的表时,有两个权限之一即可。如果要创建其他用户的表,必须要有CREATE ANY TABLE权限。

    Y

    Y

    -

    Y

    Y

    -

    CREATE ANY TABLE

    -

    创建索引

    CREATE ANY INDEX

    创建本schema中的表时,满足如下条件之一:

    • 被索引的表在本schema中。
    • 有CREATE ANY INDEX权限。如果要创建其他schema中的索引,必须要有CREATE ANY INDEX权限

    Y

    -

    -

    Y

    Y

    -

    创建序列

    CREATE SEQUENCE

    创建本schema中的序列时,满足如下条件之一:

    • 有CREATE SEQUENCE权限。
    • 有CREATE ANY SEQUENCE权限。如果要创建其他schema中的序列,必须要有CREATE ANY SEQUENCE权限

    Y

    Y

    -

    Y

    Y

    -

    CREATE ANY SEQUENCE

    -

    创建视图

    CREATE VIEW

    CREATE ANY VIEW

    创建本schema中的视图时,满足如下条件之一:

    • 有CREATE VIEW权限。
    • 有CREATE ANY VIEW权限。如果要创建其他schema中的视图,必须要有CREATE ANY VIEW权限。

    Y

    -

    -

    Y

    Y

    -

    创建数据库实例

    CREATE DATABASE

    当前仅支持在nomount状态下由SYS用户创建一个数据库实例,后续不能再创建。

    Y

    -

    -

    Y

    Y

    -

    创建同名词

    CREATE SYNONYM

    CREATE ANY SYNONYM

    CREATE PUBLIC SYNONYM

    • 创建本用户schema下的同名词,有三个权限之一即可。
    • 创建其他用户schema下的同名词,需要有CREATE_ANY SYNONYM权限。
    • 创建公共同名词,需要有CREATE PUBLIC。 SYNONYM权限

    Y

    -

    -

    Y

    Y

    -

    创建函数/存储过程

    CREATE PROCEDURE

    • 创建本用户schema下的函数/存储过程,有两个权限之一即可。
    • 创建其他用户schema下的函数/存储过程,需要有CREATE_ANY PROCEDURE权限。

    Y

    Y

    -

    Y

    Y

    -

    CREATE ANY PROCEDURE

    -

    删除用户

    DROP USER

    删除用户时,需要被授予DROP USER权限。

    Y

    -

    -

    Y

    Y

    -

    删除表空间

    DROP TABLESPACE

    删除表空时,需要被授予DROP TABLESPACE权限。

    Y

    -

    -

    Y

    Y

    -

    删除表

    DROP ANY TABLE

    用户能删除自己schema下的表;删除其他用户下的表,需要DROP ANY TABLE权限。

    Y

    -

    -

    Y

    Y

    -

    删除索引

    DROP ANY INDEX

    用户能删除自己schema下的索引;删除其他用户下的索引,需要DROP ANY INDEX权限。

    Y

    -

    -

    Y

    Y

    -

    删除序列

    DROP ANY SEQUENCE

    用户能删除自己schema下的序列;删除其他用户下的序列,需要DROP ANY SEQUENCE权限

    Y

    -

    -

    Y

    Y

    -

    删除视图

    DROP ANY VIEW

    用户能删除自己schema下的视图;删除其他用户下的视图,需要DROP ANY VIEW权限。

    Y

    -

    -

    Y

    Y

    -

    删除同名词

    DROP ANY SYNONYM

    DROP PUBLIC SYNONYM

    用户能删除自己schema下的视图;删除其他用户下的视图,需要DROP ANY SYNONYM权限;删除公共同名词,需要DROP PUBLIC SYNONYM权限;系统当前仅支持删除公共同名词。

    Y

    -

    -

    Y

    Y

    -

    删除角色

    DROP ANY ROLE

    用户能删除自己创建的角色;删除任意角色,需要用户已经被授予该角色,且具有WITH GRANT OPTION,或者具有DROP ANY ROLE权限。

    Y

    -

    -

    Y

    Y

    -

    锁表

    LOCK ANY TABLE

    用户能锁定自己schema下的表或者视图;锁定其他用户schema下的表,需要LOCK ANY TABLE权限。

    Y

    -

    -

    Y

    Y

    -

    清空表

    DROP ANY TABLE

    用户可通过TRUNCATE TABLE语句删除表中所有的行。用户能清空自己schema下的表;清空其他用户schema下的表,需要DROP ANY TABLE权限。

    Y

    -

    -

    Y

    Y

    -

    闪回表

    FLASHBACK ANY TABLE

    闪回自己schema下的表,所需权限与DROP TABLE操作的权限相同;闪回其他schema下的表,需要FLASHBACK ANY TABLE权限。注:后续根据FLASHBACK TABLE操作的同步类型(SCN/TIMESTAMP/BEFORE) 区分所需不同的权限。

    Y

    -

    -

    Y

    Y

    -

    清除操作

    DROP ANY TABLE

    DROP ANY INDEX

    DROP TABLESPACE

    PURGE DBA_RECYCLEBIN

    清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE INDEX)、表空间(PURGE TABLESPACE)、回收站(PURGE RECYCLEBIN)。

    要清除的对象(table/index)属于用户自己,不需要授予权限;如果要清除的对象属于其他用户,按照对象类型,需要的权限要求为:清除表需要DROP ANY TABLE权限;清除索引需要DROP ANY INDEX权限;清空回收站需要PURGE DBA_RECYCLEBIN权限;清除表空间需要DROP TABLESPACE权限。

    Y

    -

    -

    Y

    Y

    -

    删除函数或存储过程

    DROP ANY PROCEDURE

    用户能删除属于自己schema下的函数或者存储过程。

    如果是删除属于其他用户的函数或者存储过程,需要授予DROP ANY PROCEDURE权限。

    Y

    -

    -

    Y

    Y

    -

    修改会话参数

    ALTER SESSION

    当前所有参数都是与当前会话相关,无需授权即可修改。ALTER SESSION权限暂时预留。

    Y

    -

    -

    Y

    Y

    -

    修改表空间

    ALTER TABLESPACE

    修改表空间属性时,需要被授予ALTER TABLESPACE权限。

    Y

    -

    -

    Y

    Y

    -

    修改系统属性

    ALTER SYSTEM

    修改系统属性时,需要被授予ALTER SYSTEM权限。

    Y

    -

    -

    Y

    Y

    -

    修改数据库

    ALTER DATABASE

    修改数据库属性时,需要被授予ALTER DATABASE权限。

    Y

    -

    -

    Y

    Y

    -

    修改用户信息

    ALTER USER

    更改用户信息时,需要授予该权限。特别的,普通用户无需该权限就可以修改自己密码,即使拥有该权限,也不能修改其他用户的密码。授予DBA角色的用户即使拥有该权限,也不能修改其他DBA用户的密码。

    Y

    -

    -

    Y

    Y

    -

    修改表

    ALTER ANY TABLE

    用户是表的属主,不需要授权;否则需要表的ALTER对象权限,或者ALTER ANY TABLE权限。

    Y

    -

    -

    Y

    Y

    -

    修改索引

    ALTER ANY INDEX

    用户有权限修改属于自己schema下索引的属性,不需要其他权限。

    如果要修改其他用户schema下的索引属性,需要授予ALTER ANY INDEX系统权限。

    Y

    -

    -

    Y

    Y

    -

    修改序列

    ALTER ANY SEQUENCE

    用户是序列的属主,不需要授权;否则需要序列的ALTER对象权限,或者ALTER ANY SEQUENCE权限。

    Y

    -

    -

    Y

    Y

    -

    访问序列

    SELECT ANY SEQUENCE

    用户有权限访问属于自己的序列,不需要授予权限。

    如果要其他用户的序列,需要被授予SELECT ANY SEQUENCE权限。

    Y

    -

    -

    Y

    Y

    -

    授权操作

    GRANT ANY PRIVILEGE

    GRANT ANY ROLE

    GRANT ANY OBJECT PRIVILEGE

    如果是授权系统权限,执行该语句的用户需要满足如下条件之一:

    • 已授权该系统权限,并有WITH ADMIN OPTION属性。
    • 已授权GRANT ANY PRIVILEGE系统权限。

    如果是授予角色,执行该语句的用户需要满足如下条件之一:

    • 已授予该角色,并有WITH ADMIN OPTION属性。
    • 已授权GRANT ANY ROLE系统权限。
    • 是该角色的创建者。

    拥有GRANT ANY OBJECT PRIVILEGE系统权限的用户能够将任意用户的对象的权限授予给其他用户。

    Y

    -

    -

    Y

    Y

    -

    回收权限操作

    GRANT ANY PRIVILEGE

    GRANT ANY ROLE

    如果是回收系统权限,执行该语句的用户需要满足如下条件之一:

    • 已授权该系统权限,并有WITH ADMIN OPTION属性。
    • 已授权GRANT ANY PRIVILEGE系统权限。

    如果是回收角色,执行该语句的用户需要满足如下条件之一:

    • 已授予该角色,并有WITH ADMIN OPTION属性。
    • 已授权GRANT ANY ROLE系统权限。
    • 是该角色的创建者。

    Y

    -

    -

    Y

    Y

    -

    更改PROFILE属性

    ALTER PROFILE

    更改profile属性时,执行该语句的用户需要被授予该权限。

    Y

    -

    -

    Y

    Y

    -

    创建PROFILE

    CREATE PROFILE

    创建profile时,执行该语句的用户需要被授予该权限。

    Y

    -

    -

    Y

    Y

    -

    删除PROFILE

    DROP PROFILE

    删除profile时,执行该语句的用户需要被授予该权限。

    Y

    -

    -

    Y

    Y

    -

    读取任意表或视图数据

    READ ANY TABLE

    SELECT ANY TABLE

    拥有该权限的用户能查询任意表或视图的数据。如果包含for update子句,只有拥有SELECT ANY TABLE权限的用户能够查询。

    Y

    -

    -

    Y

    Y

    -

    注释权限

    COMMENT ANY TABLE

    为自己的表增加注释时,不需要权限;为任意用户的表增加注释时,需要执行语句的用户拥有该权限。

    Y

    -

    -

    Y

    Y

    -

    更新表数据

    UPDATE ANY TABLE

    拥有该权限的用户能够更新任意用户表的数据。

    Y

    -

    -

    Y

    Y

    -

    插入表数据

    INSERT ANY TABLE

    拥有该权限的用户能够为任意用户表插入数据。

    Y

    -

    -

    Y

    Y

    -

    删除表数据

    DELETE ANY TABLE

    拥有该权限的用户能够删除任意用户表的数据。

    Y

    -

    -

    Y

    Y

    -

    备份操作

    SYSBACKUP

    SYSDBA

    执行备份操作需要用户拥有SYSBACKUP或者SYSDBA权限。

    Y

    -

    -

    Y

    Y

    -

    恢复操作

    SYSDBA

    执行恢复操作需要用户拥有SYSDBA权限。

    Y

    -

    -

    Y

    Y

    -

    停止数据库

    SYSDBA

    执行停止数据库操作需要用户拥有SYSDBA权限。

    Y

    -

    -

    Y

    Y

    -

    重建备机

    SYSDBA

    执行重建备机操作需要用户拥有SYSDBA权限。

    Y

    -

    -

    Y

    Y

    -

    物理备份集的合法性校验

    SYSDBA

    执行物理备份集的合法性校验操作需要用户拥有SYSDBA权限。

    Y

    -

    -

    Y

    Y

    -

    分析表操作

    ANALYZE ANY

    分析自己的表时,不需要权限,分析其他用户表时(SYS用户除外)需要ANALYZE ANY权限,分析SYS用户的表需要DBA权限。

    Y

    -

    -

    Y

    Y

    -

    修改触发器

    ALTER ANY TRIGGER

    修改属于自己的触发器定义时,不需要授予权限。修改其他用户的触发器定义,需要执行alter trigger语句的用户被授予该权限。

    Y

    -

    -

    Y

    Y

    -

    创建触发器

    CREATE TRIGGER

    创建属于自己的触发器时,需要用户被授予CREATE TRIGGER权限。

    创建属于其他用户的触发器时,需要用户被授予CREATE ANY TRIGGER权限。

    Y

    Y

    -

    Y

    Y

    -

    CREATE ANY TRIGGER

    -

    删除触发器

    DROP ANY TRIGGER

    删除属于自己的触发器时,不需要授予权限。

    删除属于其他用户的触发器时,需要被授予DROP ANY TRIGGER权限。

    Y

    -

    -

    Y

    Y

    -

    执行存储过程

    EXECUTE ANY PROCEDURE

    执行属于自己的存储过程时,不需要授予权限。

    执行属于其他的用户的存储过程时,需要被授予EXECUTE ANY PROCEDURE系统权限或者该存储过程的execute对象权限。

    Y

    -

    -

    Y

    Y

    -

    修改存储过程

    ALTER ANY PROCEDURE

    预留权限

    Y

    -

    -

    Y

    Y

    -

    修改物化视图

    ALTER ANY MATERIALIZED VIEW

    预留权限

    Y

    -

    -

    Y

    Y

    -

    创建物化视图

    CREATE ANY MATERIALIZED VIEW

    CREATE MATERIALIZED VIEW

    预留权限

    Y

    -

    -

    Y

    Y

    -

    删除物化视图

    DROP ANY MATERIALIZED VIEW

    预留权限

    Y

    -

    -

    Y

    Y

    -

    修改角色属性

    ALTER ANY ROLE

    预留权限

    Y

    -

    -

    Y

    Y

    -

    创建分布规则

    CREATE DISTRIBUTE RULE

    创建分布式规则时,需要用户被授予CREATE DISTRIBUTE RULE权限

    Y

    -

    -

    Y

    Y

    -

    闪回归档

    FLASHBACK ARCHIVE ADMINISTER

    预留权限

    Y

    -

    -

    Y

    Y

    -

    全局查询重写

    GLOBAL QUERY REWRITE

    预留权限

    Y

    -

    -

    Y

    Y

    -

    管理表空间

    MANAGE TABLESPACE

    预留权限

    Y

    -

    -

    Y

    Y

    -

    物化视图刷新

    ON COMMIT REFRESH

    预留权限

    Y

    -

    -

    Y

    Y

    -

    无限制使用表空间

    UNLIMITED TABLESPACE

    预留权限

    Y

    -

    -

    Y

    Y

    -

    创建子视图

    UNDER ANY VIEW

    预留权限

    Y

    -

    -

    Y

    Y

    -

    系统操作员权限

    SYSOPER

    预留权限

    Y

    -

    -

    Y

    Y

    -

    创建节点

    CREATE NODE

    创建集群节点时,需要被授予CREATE NODE权限。

    Y

    -

    -

    Y

    Y

    -

    删除节点

    DROP NODE

    删除集群环境中的节点时,需要被授予DROP NODE权限。

    Y

    -

    -

    Y

    Y

    -

    修改节点属性

    ALTER NODE

    修改集群环境中的节点属性时,需要被授予ALTER NODE权限。

    Y

    -

    -

    Y

    Y

    -

说明:

SYS用户和GAUSSDBA用户具有上述所有权限。

  • 同名词的权限:同名词的权限与其表示的对象的权限一致。即:将同名词的权限授予给用户,相当于将同名词表示的对象的权限授予给用户,反过来也成立:将对象的权限授予给用户,如果该对象存在同名词,该同名词的权限也授予给了该用户。访问同名词时,将检查当前操作用户是否有同名词表示的对象的权限。
  • 通过角色继承权限:
    • 将角色授予给用户/角色时,用户/角色会继承该角色拥有的所有权限(包括系统权限和所有被授予的对象权限)
    • 将角色从用户/角色回收时,用户/角色从该角色继承的权限会被回收。如果对于同一个权限,用户/角色从另外的角色继承了该权限,回收一个角色后,用户/角色仍然拥有该权限。
  • 删除对象
    • 当删除表、视图、序列、存储过程时,会同步删除用户/角色拥有的该对象的权限。
  • 删除用户/角色
    • 删除用户时,会删除该用户下的所有对象,因此也会同步删除其他用户被授予的该对象的权限。同时会级联删除该用户授予给其他用户会和角色的权限。
    • 删除角色时,会删除授予给该角色的所有权限,并同步删除被授予该角色的用户/角色对应的权限。
  • 创建视图、访问视图时权限要求:
    • 创建视图时,除了要求当前用户有CREATE VIEW(创建本用户的视图) 或者CREATE ANY VIEW(创建任意用户的视图)系统权限,还需要视图的拥有者(可能是当前用户,也可能是其他用户)对视图中访问的对象有SELECT或者READ权限。
    • 访问视图时,除了要求用户有对视图的SELECT/SELECT ANY TABLE或者READ/READ ANY TABLE权限外,还需要视图的拥有者(可能是当前用户,也可能是其他用户)对视图中访问的对象有SELECT或者READ权限。
  • 对象权限检查的规则:对象的所有着拥有该对象的所有权限。
    • SELECT : 用户访问自己的对象时,不需要授予权限;访问其他用户的对象,需要被授予该对象的SELECT对象权限,或者SELECT ANY TABLE系统权限。
    • UPDATE : 用户更新自己的对象时,不需要授予权限;更新其他用户的对象,需要被授予该对象的UPDATE对象权限,或者UPDATE ANY TABLE系统权限。
    • DELETE : 用户删除自己对象中的数据时,不需要授予权限;删除其他用户的对象数据时,需要被授予该对象的DELETE对象权限,或者DELETE ANY TABLE系统权限。
    • INSERT : 用户往自己对象中插入数据时,不需要授予权限;往其他用户的对象插入数据时,需要被授予该对象的INSERT对象权限,或者INSERT ANY TABLE系统权限。
    • ALTER : 更改自己对象的定义时,不需要授予权限;更改其他用户的对象时,需要被授予该对象的ALTER对象权限,或者ALTER ANY { TABLE | SEQUENCE } 系统权限。
    • INDEX:创建索引时,需要用户被授予对象上的INDEX权限。
    • EXECUTE:执行存储过程或者调用自定义函数、系统包函数时,需要用户被授予对象的EXECUTE权限。当前系统包有:DBMS_UTILITY、DBMS_STATS、DBMS_STANDARD、DBMS_SQL、DBMS_RANDOM、DBMS_RAFT、DBMS_OUTPUT、DBMS_LOB和DBMS_JOB。普通用户调用DBMS_JOB包,需要系统管理员授权EXECUTE权限给普通用户,其他的系统包默认所有用户有权限调用。
    • READ:访问对象的权限,与SELECT权限类似。与SELECT的区别是:如果有FOR UPDATE子句,需要SELECT权限。没有FOR UPDATE子句时,SELECT与READ权限相同。
    • REFERENCES:创建外键约束时,需要有被引用的对象的REFERENCES权限。
  • 普通用户即使拥有下列权限也不可以操作sys用户对象。sys用户将对象的权限单独授予普通用户,普通用户才可以访问sys对象。

    CREATE ANY TABLE

    CREATE ANY INDEX

    CREATE ANY SEQUENCE

    CREATE ANY VIEW

    CREATE ANY SYNONYM

    CREATE ANY PROCEDURE

    DROP ANY TABLE

    DROP ANY INDEX

    DROP ANY SEQUENCE

    DROP ANY VIEW

    DROP ANY SYNONYM

    LOCK ANY TABLE

    DROP ANY TABLE

    DROP ANY PROCEDURE

    ALTER ANY TABLE

    ALTER ANY INDEX

    ALTER ANY SEQUENCE

    UPDATE ANY TABLE

    INSERT ANY TABLE

    DELETE ANY TABLE

    ANALYZE ANY

    ALTER ANY TRIGGER

    CREATE ANY TRIGGER

    DROP ANY TRIGGER

    EXECUTE ANY PROCEDURE

如下赋权操作为高危操作,请慎重执行:

CREATE ANY TABLE

CREATE ANY INDEX

CREATE ANY SEQUENCE

CREATE ANY VIEW

CREATE ANY SYNONYM

CREATE ANY PROCEDURE

DROP ANY TABLE

DROP ANY INDEX

DROP ANY SEQUENCE

DROP ANY VIEW

DROP ANY SYNONYM

LOCK ANY TABLE

DROP ANY TABLE

DROP ANY PROCEDURE

ALTER ANY TABLE

ALTER ANY INDEX

ALTER ANY SEQUENCE

UPDATE ANY TABLE

INSERT ANY TABLE

DELETE ANY TABLE

ANALYZE ANY

ALTER ANY TRIGGER

CREATE ANY TRIGGER

DROP ANY TRIGGER

EXECUTE ANY PROCEDURE

  • role_name

    角色名。参考ROLE语句说明。将角色授权给用户/角色,表示被授权的用户/角色继承role角色的所有系统权限。将角色授权给其他的角色时,不能循环授权。如:将role1授权给role2,将role2授权给role3,将role3授权给role1。

    系统默认有四个角色:dba,resource,connect, statistics。各自所拥有的权限请参见《GaussDB 100 1.0.0产品文档》中的数据库参考信息 > 数据字典和视图 > 用户视图 > ROLE_SYS_PRIVS。DBA角色拥有所有系统权限,授予DBA角色给普通用户时请谨慎。

  • WITH ADMIN OPTION

    此选项表示的含义如下:

    • grantee拥有将此系统权限/角色授权给其他用户或者角色的权限(即grant权限的传递)。
    • grantee拥有回收自身拥有的该系统权限或role的权限。
    • 此选项一旦设置后,只能通过REVOKE语句将整个权限回收。不能单独回收此选项而保留权限。
  • object_privilege_name : 对象权限名称。不同的对象的权限集合不同。目前支持的对象类型有:表、视图、序列、存储过程、函数、触发器、系统高级包。
    对象及对象支持的操作权限如下表所示。其中“Y”表示对象支持该权限,“-”表示对象不支持该权限,“预留”表示该权限是对象的预留权限。

    对象类型

    对象是否支持此权限

    SELECT

    UPDATE

    INSERT

    DELETE

    INDEX

    READ

    REFERENCES

    ALTER

    EXECUTE

    Y

    Y

    Y

    Y

    Y

    Y

    Y

    Y

    -

    视图

    Y

    预留

    预留

    预留

    -

    Y

    预留

    -

    -

    序列

    Y

    -

    -

    -

    -

    -

    -

    Y

    -

    存储过程

    -

    -

    -

    -

    -

    -

    -

    -

    Y

    触发器

    -

    -

    -

    -

    -

    -

    -

    -

    -

    函数

    -

    -

    -

    -

    -

    -

    -

    -

    Y

    系统高级包

    -

    -

    -

    -

    -

    -

    -

    -

    Y

    • 当前使用GRANT ALL PRIVILEGES将某个对象的权限授予用户时,将根据对象类型确定要授予/回收的权限集合。
    • 将对象权限授予给PUBLIC时,系统中所有用户都拥有授予的该对象的权限,包括授权操作之后新增加的用户。请谨慎使用。
  • grantee

    受权者。可以是用户或者角色。如果grantee为PUBLIC,表示将权限授予给所有用户,包括授权之后新增加的用户。因此,授权给PUBLIC用户时,请谨慎使用。

  • ALL [ PRIVILEGES ]

    表示所有对象权限,PRIVILEGES可省略。

  • WITH GRANT OPTION
    • 使用with grant option。被授权用户可将所获得的权限再次授予其它用户或角色,并且权限的取消是级联的。
    • 此选项一旦设置后,只能通过REVOKE语句将整个权限回收。不能单独回收此选项而保留权限

示例

  • 创建用户joe,并将CREATE SESSION权限授权给用户joe。
    --删除用户joe。 DROP USER joe CASCADE;
    --创建用户joe,密码是gauss_123。 CREATE USER joe IDENTIFIED BY gauss_123;
    --将CREATE SESSION权限授权给用户joe。 GRANT CREATE SESSION TO joe;
  • 创建用户jim、用户glow和角色testers,并将角色testers授权给用户jim和用户glow。
    --删除角色testers。 DROP ROLE testers;
    --创建角色testers。 CREATE ROLE testers;
    --将权限CREATE SESSION、CREATE USER、CREATE ROLE、CREATE TABLE授予角色testers; GRANT CREATE SESSION, CREATE USER, CREATE ROLE, CREATE TABLE TO testers;
    --删除用户jim。 DROP USER jim CASCADE;
    --创建用户jim,密码是database_123. CREATE USER jim IDENTIFIED BY database_123;
    --删除用户glow。 DROP USER glow CASCADE;
    --创建用户glow,密码是database_123。 CREATE USER glow IDENTIFIED BY database_123;
    --将角色testers授予用户jim和用户glow。 GRANT testers TO jim, glow;
  • 创建表employees,创建用户jim,并赋予用户jim对此表的插入权限。
    --删除表employees。 DROP TABLE IF EXISTS employees;
    --创建表employees。 CREATE TABLE employees ( employee_id NUMBER(6) NOT NULL, first_name VARCHAR2(20), last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn NOT NULL, email VARCHAR2(25) CONSTRAINT emp_email_nn NOT NULL, phone_number VARCHAR2(20), hire_date DATE DEFAULT SYSDATE CONSTRAINT emp_hire_date_nn NOT NULL, job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL, salary NUMBER(8,2) CONSTRAINT emp_salary_nn NOT NULL, commission_pct NUMBER(2,2), manager_id NUMBER(6), department_id NUMBER(4), dn VARCHAR2(300), CONSTRAINT emp_email_uk UNIQUE (email) ) DISTRIBUTE BY HASH(employee_id);
    --删除用户jim。 DROP USER jim CASCADE;
    --创建用户jim,密码是gauss_123。 CREATE USER jim IDENTIFIED BY gauss_123;
    --赋予用户jim对表employees的插入权限。 GRANT INSERT ON employees TO jim;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论