大数据ClickHouse进阶(二十三):ClickHouse用户配置

举报
Lansonli 发表于 2022/11/14 00:38:46 2022/11/14
【摘要】 ​ClickHouse用户配置在之前使用ClickHouse过程中为了简便我们使用的default默认用户,默认无密码登录模式,这显然不符合生产环境的要求。我们可以通过“/etc/clickhoue-server/user.xml”来配置用户相关配置项,此文件可以配置系统参数设置、用户定义、权限、以及熔断机制等。一、用户Profile用户Profile类似用户角色,可以预先在user.xml...

ClickHouse用户配置

在之前使用ClickHouse过程中为了简便我们使用的default默认用户,默认无密码登录模式,这显然不符合生产环境的要求。我们可以通过“/etc/clickhoue-server/user.xml”来配置用户相关配置项,此文件可以配置系统参数设置、用户定义、权限、以及熔断机制等。


一、用户Profile

用户Profile类似用户角色,可以预先在user.xml中为ClickHouse定义多组profile角色,并为每组角色定义不同的配置项以实现配置的复用,例如:

<yandex>
	<!-- 配置profiles -->
	<profiles>
		<default><!-- 自定义角色,默认名称 -->
			<max_memory_usage>10000000000</max_memory_usage>
			<use_uncompressed_cache>0</use_uncompressed_cache>
		</default>
		<test1><!-- 自定义角色,默认名称 -->
			<distributed_product_mode>allow</distributed_product_mode>
		</test1>
		... ...
	</profiles>
	... ...
</yandex>

注意:

  • max_memory_usage:在单个ClickHouse服务进程中,运行一次查询限制使用的最大内存用量,默认值为10G
  • use_uncompressed_cache:是否使用未压缩块的缓存,填写0或1。默认情况下,0(禁用)。


distributed_product_mode:当查询时包含分布式表join时,更改分布式子查询行为。allow允许使用子查询。

以上配置中我们定义了“default”和“test1”两组profile角色,在user.xml中配置用户时,我们就可以使用对应的角色。

注意:在<profiles>标签配置中,名称为“default”的profile将作为默认的配置被加载,所以必须有“default”角色。


二、配置约束

constraints标签可以设置一组约束条件,保证profile角色内的参数值不会被随意修改,约束条件有如下三种规则:

  • Min:最小值约束,在设置相应参数的时候,取值不能小于该阈值。
  • Max:最大值约束,在设置相应参数的时候,取值不能大于该阈值。
  • Readonly:只读约束,该参数值不允许被修改。

 例如,修改user.xml中<default>profile角色,如下:

<yandex>
	<!-- 配置profiles -->
	<profiles>
		<default><!-- 自定义角色,默认名称 -->
			<max_memory_usage>10000000000</max_memory_usage>
		  <distributed_product_mode>allow</distributed_product_mode>
			<constraints><!--配置约束-->
				<max_memory_usage>
					<min>5000000000</min>
					<max>20000000000</max>
				</max_memory_usage>
				<distributed_product_mode>
					<readonly/>
				</distributed_product_mode>
			</constraints>
		</default>
		... ...
	</profiles>
	... ...
</yandex>

从上面的配置我们可以看出,在default默认的profile角色内给两组参数设置了约束,配置完成之后可以直接登录ClickHouse,尝试修改对应的值:

#修改使用最大内存
node1 :) set max_memory_usage=50;
 DB::Exception: Setting max_memory_usage shouldn't be less than 5000000000. (SETTING_CONSTRAINT_VIOLATION)

#修改distributed_product_mode的参数值
node1 :) set distributed_product_mode='deny';
 DB::Exception: Setting distributed_product_mode should not be changed. (SETTING_CONSTRAINT_VIOLATION)

以上我们可以看到配置约束成功阻止了预期外的修改。

注意:在default中默认定义的constraints约束,将作为默认全局约束,自动被其他profile继承。


三、用户定义

在user.xml中可以使用users标签配置自定义用户,我们可以在user.xml中看到<users>标签下有default用户,我们之前使用默认就是此用户。下面我们配置一个新的用户“zhangsan”,user.xml配置如下:

<yandex>
... ...
	<users>
		<default>
			... ...
		</default>
		<zhangsan>
			<!-- 设置密码 -->
			<password>123456</password>
			
			<!-- 设置用户允许登录的网络地址 -->
			<networks>
				<!-- 表示任意节点登录 -->
				<ip>::/0</ip>
			</networks>
			
			<!-- 用户使用的profile 角色 -->
			<profile>default</profile>
			
			<!-- 设置熔断机制 -->
			<quota>default</quota>
			
		</zhangsan>
	</users>
</yandex>

 以上配置完成后,不需重启ClickHouse,使用用户zhangsan登录ClickHouse,操作如下:

[root@node1 ~]# ClickHouse-client -u zhangsan --password 123456

 用户zhangsan有密码登录生效。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。