GRANT操作:
- 給云數據庫ClickHouse的用戶或角色賦予 權限
- 將角色分配給用戶或其他角色
取消權限,使用 REVOKE語句。查看已授權的權限請使用 SHOW GRANTS。
授權操作語法
GRANT [ON CLUSTER cluster_name] privilege [(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} TO {user| role |CURRENT_USER} [,...] [WITH GRANT OPTION] [WITH REPLACE OPTION]
privilege— 權限類型role— 用戶角色user— 用戶賬號
WITH GRANT OPTION 授予 user 或 role執行 GRANT 操作的權限。用戶可將在自身權限范圍內的權限進行授權 WITH REPLACE OPTION 以當前sql里的新權限替代掉 user 或 role的舊權限,如果沒有該選項則是追加授權。
角色分配的語法
GRANT [ON CLUSTER cluster_name] role [,...] TO {user| another_role |CURRENT_USER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION]
-
role— 角色 -
user— 用戶WITH ADMIN OPTION授予user或role執行ADMIN OPTION 的權限WITH REPLACE OPTION以當前sql里的新role替代掉user或role的舊role,如果沒有該選項則是追加roles。
用法
使用 GRANT,你的賬號必須有 GRANT OPTION的權限。用戶只能將在自身權限范圍內的權限進行授權。
例如,管理員有權通過下面的語句給 john賬號添加授權:
GRANT SELECT (x,y) ON db.table TO john WITH GRANT OPTION
這意味著 john 有權限執行以下操作:
SELECT x,y FROM db.tableSELECT x FROM db.tableSELECT y FROM db.table
john 不能執行 SELECT z FROM db.table。同樣的 SELECT * FROM db.table 也是不允許的。執行這個查詢時,CH不會返回任何數據,甚至 x 和 y列。唯一的例外是,當表僅包含 x和 y列時。這種情況下,CH返回所有數據。
同樣 john 有權執行 GRANT OPTION,因此他能給其它賬號進行和自己賬號權限范圍相同的授權。
可以使用 * 號代替表或庫名進行授權操作。例如, GRANT SELECT ON db.* TO john 操作運行 john對 db庫的所有表執行 SELECT查詢。同樣,你可以忽略庫名。在這種情形下,權限將指向當前的數據庫。例如, GRANT SELECT ON* to john 對當前數據庫的所有表指定授權, GRANT SELECT ON mytable to john對當前數據庫的 mytable表進行授權。
訪問 systen數據庫總是被允許的(因為這個數據庫用來處理sql操作) 可以一次給多個賬號進行多種授權操作。 GRANT SELECT,INSERT ON *.* TO john,robin 允許 john和 robin 賬號對任意數據庫的任意表執行 INSERT和 SELECT操作。