全部产品
云市场

GRANT

更新时间:2019-07-05 13:43:29

为账号授权

语法

  1. GRANT privilege_type
  2. ON privilege_level
  3. TO user[, …]

参数

  • privilege_type:权限类型,取值为SELECT、 SHOW、 ALTER、DROP、CREATE、INSERT、UPDATE、DELETE、GRANT OPTION、 ALL、ALL PRIVILEGES、USAGE 。

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

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

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

    • SELECT为QUERY授权

    • SHOW为SHOW、USE命令授权(与MySQL的逻辑差异比较大)

    • ALTER为ALTER或其他变更型的DDL授权

    • CREATE为CREATE型的DDL授权

    • DROP为DROP型的DDL授权

    • INSERT为INSERT型的DML授权

    • UPDATE为UPDATE型的DML授权

    • DELETE为DELETE型的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权限:

  1. grant all on ots_account_test.* to dla_test;