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;