zoukankan      html  css  js  c++  java
  • ClickHouse访问权限控制

    ClickHouse的访问权限是怎么做的,例子如下:

    <dba>
        <password_sha256_hex>60cd41aedc4e47e8883682b416109e7b7e345e15decc63c2c98ecdab5e8e053a</password_sha256_hex>
        <networks incl="networks" />
        <profile>readonly</profile>
        <quota>default</quota>
        <allow_databases>
            <database>default</database>
        </allow_databases>
    </dba>

    默认的配置文件路径是:/etc/clickhouse-server
    其中有config.xml,users.xml,一个是服务器相关配置,一个是用户权限的配置。下面看看users.xml。这里面分几部分。

    1. 用户名,用户密码,访问来源地址

    2. 资源限制,和greenplum有点像。

    3. 配置设置,这其中有用户是否只读。ck目前只有select和insert。所以权限也比较简单。

    密码需要特殊说明,如果不写,那么就是空密码,也可以写明文密码,也可以写密文,可以用如下命令生成密文密码:

    PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
    [root@db_server_yayun_03 ~]# PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
    AwBtorOK
    4e588aea92dc77d0960505f6ff5e843eab388c28f1c85fae9df917f89ebb0ed6 

    其中AwBtorOK就是用户的密码,4e588aea92dc77d0960505f6ff5e843eab388c28f1c85fae9df917f89ebb0ed6就是密文,需要写在配置文件里面。下面说说刚开始提到的:复制代码

    <dba>
        <password_sha256_hex>60cd41aedc4e47e8883682b416109e7b7e345e15decc63c2c98ecdab5e8e053a</password_sha256_hex>
        <networks incl="networks" />
        <profile>readonly</profile>
        <quota>default</quota>
        <allow_databases>
            <database>default</database>
        </allow_databases>
    </dba>

    这段的意思就是添加一个dba用户,只读权限,允许访问的数据库是default。来源ip是不限制。这个是配置在/etc/metrika.xml中的。这个配置只是引用而已。

    <networks>
       <ip>::/0</ip>
    </networks>

    下面用dba用户登录试试:

    clickhouse-client -u dba -h 192.168.0.10 --password mc1lF9cI
    [root@db_server_yayun_02 ~]# clickhouse-client -u dba -h 192.168.0.10 --password mc1lF9cI
    ClickHouse client version 1.1.54198.
    Connecting to 192.168.0.10:9000 as user dba.
    Connected to ClickHouse server version 1.1.54198.
    
    :) 

    可以看见已经登录,数据库中还有一个yayun数据库,我们看看能否访问:

    :) use yayun
    
    USE yayun
    
    Received exception from server:
    Code: 291. DB::Exception: Received from 192.168.0.10:9000. DB::Exception: Access denied to database yayun. 
    
    0 rows in set. Elapsed: 0.035 sec. 

    可以看见提示没有权限,上面也说到过,只有访问default库的权限。我们再试试

    :) use default
    
    USE default
    
    Ok.
    
    0 rows in set. Elapsed: 0.002 sec. 
    
    :) show tables;
    
    SHOW TABLES
    
    ┌─name───────────┐
    │ ontime_all     │
    │ ontime_local   │
    │ ontime_replica │
    └────────────────┘
    → Progress: 3.00 rows, 189.00 B (399.91 rows/s., 25.19 KB/s.) 
    3 rows in set. Elapsed: 0.008 sec. 
    
    :) select * from ontime_all limit 1;
    
    SELECT *
    FROM ontime_all 
    LIMIT 1
    
    ┌─FlightDate─┬─Year─┐
    │ 2001-10-12 │ 2001 │
    └────────────┴──────┘
    ↘ Progress: 1.00 rows, 4.00 B (44.09 rows/s., 176.35 B/s.) 
    1 rows in set. Elapsed: 0.023 sec. 
    
    :) 

    可以看见没有问题,那么能创建库表么?试试

    :) create database db01
    
    CREATE DATABASE db01
    
    Received exception from server:
    Code: 164. DB::Exception: Received from 192.168.0.10:9000. DB::Exception: Cannot execute query in readonly mode. 
    
    0 rows in set. Elapsed: 0.023 sec. 
    
    :) 

    可以看见只读模式,权限比较简单,更多的请参考官方文档。或者仔细阅读users.xml。

    参考文档:

    https://clickhouse.yandex/reference_en.html#Access%20rights

  • 相关阅读:
    Asp.net web服务处理程序(第六篇)
    Asp.net 处理程序(第五篇)
    HttpApplication实战大文件上传 (第四篇)
    HttpApplication处理对象与HttpModule处理模块 (第三篇)
    Asp.net管道 (第二篇)
    HTTP -> Asp.net (第一篇)
    C# 计划任务
    认识元数据和IL(下)<第五篇>
    认识元数据和IL(中)<第四篇>
    认识元数据和IL(上) <第三篇>
  • 原文地址:https://www.cnblogs.com/uestc2007/p/10875748.html
Copyright © 2011-2022 走看看