Skip to content

对象级权限

语法格式

授予对象级权限

sql
GrantStmt::=
    GRANT privileges ON [TABLE | VIEW | PROCEDURE | SEQUENCE] name_space TO grantee_list [WITH GRANT OPTION]

回收对象级权限

sql
RevokeStmt::=
    REVOKE privileges ON [TABLE | VIEW | PROCEDURE | PACKAGE | SEQUENCE] name_space FROM grantee_list
|   REVOKE GRANT OPTION FOR privileges ON name_space FROM grantee_list

权限信息

sql
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}]...

参数说明

  • privileges:授予/回收权限操作类型,包括SELECTUPDATEEXECUTE等,若要授予/回收对象的所有可操作权限,可使用ALLALL PRIVILEGES代替。
  • name_space:此处为指定授予/回收操作权限对象名,对象名与privileges操作类型必须匹配,如该对象为TABLE,则不能授予EXECUTE权限。
  • grantee_list:被授予/回收权限的用户名或角色名。
  • WITH GRANT OPTION:权限可转授,权限的赋予和回收是关联的,如将WITH GRANT OPTION用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,权限回收时转授的权限会一同被收回,WITH GRANT OPTION只能在授予对象级和列级权限时使用。
  • REVOKE GRANT OPTION FOR:回收GRANT语句中指定的WITH GRANT OPTION的转授权限,用户仍然具有该权限,但是不能将该权限转授予其他用户。

示例

  • 示例1
    授予用户U1对于表test_permission的数据插入权限,则用户U1对表test_permisssion无删除、查询、更改、引用等权限。

    sql
    CREATE TABLE test_permission(id int);
    CREATE USER u1 IDENTIFIED BY 'test_123@';
    GRANT INSERT ON test_permission TO u1;
  • 示例2
    授予用户U1对于表test_premission所有数据库所允许的操作权限,包括:INSERT、UPDATE、DELETE、SELECT、REFERENCES等。

    sql
    GRANT ALL ON test_permission TO u1;