ClickHouse之访问权限控制
研究ClickHouse也有幾周了,今天來和大家說說ClickHouse的訪問權(quán)限是怎么做的,ClickHouse不像MySQL那樣,直接創(chuàng)建用戶,而是需要在配置文件里面添加用戶,一個(gè)簡(jiǎn)單的例子如下:
<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>默認(rèn)的配置文件路徑是:/etc/clickhouse-server
其中有config.xml,users.xml,一個(gè)是服務(wù)器相關(guān)配置,一個(gè)是用戶權(quán)限的配置。下面看看users.xml。這里面分幾部分。
1. 用戶名,用戶密碼,訪問來源地址
2. 資源限制,和greenplum有點(diǎn)像。
3. 配置設(shè)置,這其中有用戶是否只讀。ck目前只有select和insert。所以權(quán)限也比較簡(jiǎn)單。
密碼需要特殊說明,如果不寫,那么就是空密碼,也可以寫明文密碼,也可以寫密文,可以用如下命令生成密文密碼:
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>這段的意思就是添加一個(gè)dba用戶,只讀權(quán)限,允許訪問的數(shù)據(jù)庫是default。來源ip是不限制。這個(gè)是配置在/etc/metrika.xml中的。這個(gè)配置只是引用而已。
<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.:)可以看見已經(jīng)登錄,數(shù)據(jù)庫中還有一個(gè)yayun數(shù)據(jù)庫,我們看看能否訪問:
:) use yayunUSE yayunReceived 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.可以看見提示沒有權(quán)限,上面也說到過,只有訪問default庫的權(quán)限。我們?cè)僭囋?/p> :) use defaultUSE defaultOk.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. :)
可以看見沒有問題,那么能創(chuàng)建庫表么?試試
:) create database db01CREATE DATABASE db01Received 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. :)可以看見只讀模式,權(quán)限比較簡(jiǎn)單,更多的請(qǐng)參考官方文檔。或者仔細(xì)閱讀users.xml。
?
參考文檔:
https://clickhouse.yandex/reference_en.html#Access%20rights
?
總結(jié)
以上是生活随笔為你收集整理的ClickHouse之访问权限控制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android自定义View探索—生命周
- 下一篇: Windows GPT磁盘GUID结构详