GRANT
GRANT用于为数据库账号授权。
语法
GRANT privilege_type
ON privilege_level
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为SELECT授权。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权限:grant all on ots_account_test.* to dla_test;为
dla_test账号授予tpch Schema中finished_orders_v1视图的SELECT、SHOW、DROP、ALTER权限。grant select,show,drop,alter on tpch.finished_orders_v1 to dla_test;