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;