进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容!
🏡个人主页:含各种IT体系技术,IT贫道_大数据OLAP体系技术栈,Apache Doris,Kerberos安全认证-CSDN博客
📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情!
👍点赞:赞同优秀创作,你的点赞是对我创作最大的认可!
⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!
✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!
博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频
目录
1. 用户Profile
2. 配置约束
2. 用户定义
在之前使用clickhouse过程中为了简便我们使用的default默认用户,默认无密码登录模式,这显然不符合生产环境的要求。我们可以通过“/etc/clickhoue-server/user.xml”来配置用户相关配置项,此文件可以配置系统参数设置、用户定义、权限、以及熔断机制等。
1. 用户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>
注意:
1.max_memory_usage:在单个clickhouse服务进程中,运行一次查询限制使用的最大内存用量,默认值为10G
2.use_uncompressed_cache:是否使用未压缩块的缓存,填写0或1。默认情况下,0(禁用)。
3.distributed_product_mode:当查询时包含分布式表join时,更改分布式子查询行为。allow允许使用子查询。
以上配置中我们定义了“default”和“test1”两组profile角色,在user.xml中配置用户时,我们就可以使用对应的角色。
注意:在<profiles>标签配置中,名称为“default”的profile将作为默认的配置被加载,所以必须有“default”角色。
2. 配置约束
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继承。
2. 用户定义
在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有密码登录生效。
👨💻如需博文中的资料请私信博主。