概述
在数据库系统中除了用户或角色的天然权限无需进行权限授予外,其他任何权限均需通过权限授予的方式进行权限赋予。
语法格式
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 等。