GRANT

GRANT用于为数据库账号授权。

语法

GRANT privilege_type
ON privilege_level 
TO user[, …]

参数

  • privilege_type:权限类型,取值为SELECTSHOWALTERDROPCREATEINSERTUPDATEDELETEGRANT OPTIONALLALL PRIVILEGESUSAGE

    • 可以用,将多个权限连接在一起,例如:SELECT,DELETE,UPDATE,INSERT

    • ALLALL PRIVILEGES表示授予所有权限,如果此时还有其他Privilege,则其他Privilege无效。但GRANT OPTION不包含在ALL中,必须显式授权。

    • GRANT OPTIONDCL授权(GRANTREVOKE相关)。可以在Privilege中指定GRANT OPTION,也可以通过语句片段WITH GRANT OPTION来做GRANT授权。

    • SELECTSELECT授权。

    • SHOWSHOWUSE命令授权(与MySQL的逻辑差异比较大)。

    • ALTERALTER或其他变更型的DDL授权。

    • CREATECREATE型的DDL授权。

    • DROPDROP型的DDL授权。

    • INSERTINSERT型的DML授权。

    • UPDATEUPDATE型的DML授权。

    • DELETEDELETE型的DML授权。

    • USAGE表示为空。

  • privilege_level:被授权对象层级,如果要查询Schema级别权限,则写成schema_name.*;如果查询表级别权限,则写成table_name

    • *表示当前连接使用了某个Schema,然后针对该Schema/DataBase授权,Schema/DataBase级别权限。

    • *.* 表示所有库的所有表授权,Global级别权限。

    • xxDb.*表示针对Schema/DataBase这个库做授权,库级别权限。

    • xxDb.yyTable表示针对Schema/DataBase的某个表做授权,表级别权限。

    • yyTable表示当前连接使用了某个库xxDB,针对xxDB库的xxTable做授权,表级别权限。

    • 暂时不支持字段级别的授权。

  • user:被授权人

    • 只能由DLA的Root账号给其他非Root账号授权。

    • 暂时不支持非Root账号给其他账号授权。

    • 不支持跨云账号授权和撤销权限。

    • 只有相同云账号下的Root账号才能通过SHOW GRANTS,查看其他账号权限。

示例

  • dla_test账号授予ots_account_test数据库级别的all权限:

      grant all on ots_account_test.* to dla_test;
  • dla_test账号授予tpch Schemafinished_orders_v1视图的SELECTSHOWDROPALTER权限。

      grant select,show,drop,alter on tpch.finished_orders_v1 to dla_test;