ClickHouse 角色 GRANT 和 SET 的区别

ClickHouse difference between role GRANT and SET

向 StackExchange 提问 post; 请帮助我学习角色分配。 ClickHouse 正在使用两种角色分配方法;

  1. 授予
  2. 设置

例如 1:向用户 1 授予管理员权限
eg 2: SET ROLE admin TO user1

我找不到这两者的区别。如果您对此有任何了解,请指教。谢谢!

这是两个不同的命令:

  • GRANT 为用户帐户分配角色而不是 应用/激活

  • SET ROLE 当前 用户激活角色,以便使用该角色

示例(参见 https://clickhouse.tech/docs/en/sql-reference/statements/create/role/#create-role-examples):

CREATE ROLE accountant;
GRANT SELECT ON db.* TO accountant;

GRANT accountant TO user1;
/* login as user1 */

/* activate the role and use related privileges */
SET ROLE accountant;
SELECT * FROM db.*;

为避免每次用户登录后调用SET ROLE,需要通过SET DEFAULT ROLE将角色添加到默认列表。