由于clickhouse自带的默认用户只有一个(default),在实际的使用过程中,经常需要根据不同的使用人员创建不同类型的角色账号。

创建一个新账号与设置角色权限

在/etc/clickhouse-server 目录下,编辑users.xml,其中的<users>标签定义用户的相关配置信息,其结构如下:

<users>
    <username>                      <!--用户登录名-->
        <password>123</password>    <!--用户登录密码-->
        <networks>
           <ip>::/0</ip>
        </networks>   <!--允许登录的网络地址-->
        <profile>default</profile>  <!--用户使用的profile配置-->
        <quota>default</quota>      <!--用户能够使用的资源限额/熔断机制-->
    </username>
<users>

在users.xml中添加了如下配置之后,即可完成一个新用户的配置

1、用户密码的配置有三种方法,详情参考:clickhouse(二) 设置用户的登录密码

2、<networks>表示网络的访问权限,用于限制某个用户登录的客户端地址,共分为IP地址、Host主机名称以及正则匹配三种类型。

(1)、IP地址:直接使用ip地址

<ip>127.0.0.1</ip>

(2)、使用host主机名:使用host主机名设置

<host>ch5.nauu.com</host>

(3)、正则匹配:通过表达式来匹配host名称

<host>^ch\d.nauu.com$</host>

在配置了<networks>标签之后,如果登录的客户端与配置规则不匹配,就会无法登录

3、<profile>标签定义了用户的角色信息,在users.xml中的<profiles>标签中定义。

<profiles>标签下的每一个子标签代表了一种角色的信息,例如:配置了下面这个配置的用户只具有查询数据的功能

<readonly>
    <readonly>1</readonly>
</readonly>

4、<quota>标签定义了用户单位时间内的资源限制,也可以称为是一种熔断机制。

当用户的资源使用情况达到配置阈值时,就会触发熔断机制(熔断是限制资源被过度使用的一种保护机制),正在进行的操作就会被自动切断。

<quota>标签的详细配置在users.xml文件中,每一个子标签代表一种quota配置。同样的,clickhouse也给出了默认的参考配置

<quota>     
    <default>
       <interval>
            <duration>3600</duration>
            <queries>0</queries>
            <errors>0</errors>
            <result_rows>0</result_rows>
            <read_rows>0</read_rows>
            <execution_time>0</execution_time>
       </interval>
    <default>
</quota>

1、duration

duration表示累计的时间周期,单位为秒,达到该时间周期后,清除所有收集的值,接下来的周期,将重新开始计算,当服务重启时,也会清除所有的值,重新开始新的周期。

2、queris

queris表示在该周期内,允许执行的查询次数,0为不限制。

3、errors

 errors表示在该周期内,允许引发异常的查询次数,0为不限制。

4、result_rows

result_rows表示在周期内,允许查询返回的结果行数,0为不限制。

5、read_rows设置

read_rows表示在周期内,允许远程节点读取的数据行数,0为不限制。

6、execution_time设置

execution_time表示允许查询的总执行时间(又叫wall time),单位为秒,0为不限制。

如有错误,欢迎指正!