Skip to content

概述

在数据库系统中除了用户或角色的天然权限无需进行权限授予外,其他任何权限均需通过权限授予的方式进行权限赋予。

语法格式

GrantStmt::=
    GRANT privileges ON name_space TO grantee_list opt_with_grant
|   GRANT privileges ON TABLE name_space TO grantee_list opt_with_grant    
|   GRANT privileges ON VIEW name_space TO grantee_list opt_with_grant
|   GRANT privileges ON PROCEDURE name_space TO grantee_list opt_with_grant
|   GRANT privileges ON SEQUENCE name_space TO grantee_list opt_with_grant
|   GRANT sys_privileges IN SCHEMA name TO grantee_list opt_with_grant
|   GRANT sys_privileges TO grantee_list opt_with_grant
|   GRANT operation_commalist ( name_list ) ON name_space TO grantee_list  opt_with_grant
|   GRANT operation_commalist ( name_list ) ON TABLE name_space TO grantee_list  opt_with_grant

privileges::=
    ALL PRIVILEGES
|   ALL
|   operation [,operation]...

operation::=
    {SELECT | INSERT | UPDATE | DELETE | EXECUTE | REFERENCES | ALTER | DROP | INDEX | TRIGGER | VACUUM}
    
grantee_list::=
    {ROLE  UserId | UserId} [{,} {ROLE  UserId | UserId}]...
    
opt_with_grant::=
    [WITH GRANT OPTION]    
    
sys_privileges::=
    sys_privilege [,sys_privilege]
    
sys_privilege::=
    {DBA | SSO | AUDITOR | BACKUP DATABASE | BACKUP | RESTORE | RESTORE DATABASE | sys_operation obj_type}    
    
sys_operation::=
    {CREATE | CREATE ANY | ALTER ANY | DROP ANY | SELECT ANY | INSERT ANY | UPDATE ANY | DELETE ANY | EXECUTE ANY | REFERENCES ANY | VACUUM ANY | ENCRYPT ANY}
    
obj_type::=
    {DATABASE | SCHEMA | TABLE | SEQUENCE | INDEX | VIEW | PROCEDURE | PACKAGE | TRIGGER | DATABASE LINK | REPLICATION | SYNONYM | USER | ROLE | JOB}    

operation_commalist::=
    operation [,operation]...

参数解释

  • privileges:授予权限定义,可以是所有权限也可以是多个对象组合权限。
  • grantee_list:被授予权限角色组或用户组,可同时将权限授予多个用户或角色,若权限授予角色则角色下的所有用户均自动获得该授予权限。
  • opt_with_grant:权限可转授,权限的赋予和回收是关联的,如将with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,权限回收时转授的权限会一同被收回,with grant option 只能在授予对象级和列级权限时使用。
  • sys_privileges:库级权限定义。
  • operation_commalist:可授予的操作类型,包含DDL、DML类型。
  • operation:表示操作类型,包含 DDL、DML 类型,如:CREATE、ALTER、DROP、INSERT、DELETE、UPDATE、SELECT 等,若选择 ANY 参数则表示被授权对象可跨模式进行操作,否则只能在其所有模式进行相应操作。
  • UserId:此处指被授权的用户名称或角色名称。
  • obj_type:表示操作对象类型,包含TABLE、VIEW、PROCEDURE 等。