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;