ClickHouse使用SQL方式创建用户及配置

在之前的ClickHouse版本中,我们只能通过修改users.xml文件来配置用户及相关的参数(权限、资源限制、查询配额等),不是很方便。好在从20.5版本起,ClickHouse开始支持SQL化的用户配置(如同MySQL、PostgreSQL一样),易用性增强了很多。

SQL化用户配置默认是关闭的,要启用它,需要在users.xml中的一个用户(一般就是默认的default)下添加:

<access_management>1</access_management>

另外还需要在config.xml中配置权限管理数据的存储位置:

<access_control_path>/data1/clickhouse/access/</access_control_path>

这样我们就可以用default用户管理其他用户了。ClickHouse采用与MySQL近似的RBAC(Role-based access control,基于角色的访问控制)机制,所以语法也很像。下面简要列举几个操作,更加详细的内容可以参见官方文档:https://clickhouse.tech/docs/en/operations/access-rights/。

  • 创建一个单次查询只允许使用4个线程、4G内存的只读profile。
CREATE SETTINGS PROFILE low_mem_readonly SETTINGS max_threads = 4, max_memory_usage = 4000000000 READONLY;

  •  基于上述profile创建一个名为accountant的角色,并授予该角色查询account_db数据库中所有表的权限。
CREATE ROLE accountant SETTINGS PROFILE 'low_mem_readonly';
GRANT SELECT ON account_db.* TO accountant;
  • 创建一个允许内网访问的用户lmagic,设定密码,并指定它的默认角色为accountant,lmagic用户就具有了accountant角色的权限。

注意新创建的用户没有任何权限,我们也可以通过GRANT语句直接给用户授予权限。 

CREATE USER lmagic@'192.168.%.%' IDENTIFIED WITH sha256_password BY 'lm2020' DEFAULT ROLE accountant;

GRANT OPTIMIZE ON datasets.hits_v1 TO lmagic@'192.168.%.%';

观察上面设定的access_control_path目录,可以发现创建的用户配置都被保存了下来。

-rw-r----- 1 clickhouse clickhouse 135 Sep  4 21:51 034f455a-aeec-f9d0-3f76-b026318de1bd.sql
-rw-r----- 1 clickhouse clickhouse 107 Sep  4 21:45 934198fc-bd87-90bb-2062-f0c165f54cae.sql
-rw-r----- 1 clickhouse clickhouse 293 Sep  4 21:58 b643aee4-c4d4-5dd8-2e63-2dd13bf42e90.sql
-rw-r----- 1 clickhouse clickhouse   1 Aug 23 01:14 quotas.list
-rw-r----- 1 clickhouse clickhouse  48 Sep  4 21:52 roles.list
-rw-r----- 1 clickhouse clickhouse   1 Aug 23 01:14 row_policies.list
-rw-r----- 1 clickhouse clickhouse  54 Sep  4 21:46 settings_profiles.list
-rw-r----- 1 clickhouse clickhouse  56 Sep  4 21:59 users.list

如果需要更改用户配置,使用ALTER、DROP、REVOKE语法即可。例如:

  • 修改lmagic用户的密码,并改为在任何地址都可访问。
ALTER USER lmagic@'192.168.%.%' RENAME TO lmagic@'%' IDENTIFIED WITH sha256_password BY 'lm2021';

  • 删除刚才创建的profile。 
DROP SETTINGS PROFILE low_mem_readonly;

  • 撤销lmagic用户的OPTIMIZE权限。 
REVOKE OPTIMIZE ON datasets.hits_v1 FROM lmagic@'%';

最后需要注意,上述配置语句的作用域都是在单个节点上的。如果想要在集群所有节点上都生效的话,使用老生常谈的ON CLUSTER语法即可。例如:

 CREATE USER lmagic@'192.168.%.%' ON CLUSTER sht_ck_cluster_pro1 IDENTIFIED WITH......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘元涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值