ClickHouse之访问权限控制
研究ClickHouse也有几周了,今天来和大家说说ClickHouse的访问权限是怎么做的,ClickHouse不像MySQL那样,直接创建用户,而是需要在配置文件里面添加用户,一个简单的例子如下:
<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>::/</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..
Connecting to 192.168.0.10: as user dba.
Connected to ClickHouse server version 1.1.. :)
可以看见已经登录,数据库中还有一个yayun数据库,我们看看能否访问:
:) use yayun USE yayun Received exception from server:
Code: . DB::Exception: Received from 192.168.0.10:. DB::Exception: Access denied to database yayun. 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
ClickHouse之访问权限控制的更多相关文章
- MongoDB 安全和访问权限控制
MongoDB的访问控制能够有效保证数据库的安全,访问控制是指绑定Application监听的IP地址,设置监听端口,使用账户和密码登录 一,访问控制的参数 1,绑定IP地址 mongod 参数:-- ...
- (转)浅析Java中的访问权限控制
原文地址: http://www.cnblogs.com/dolphin0520/p/3734915.html 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下 ...
- 使用nginx和iptables做访问权限控制(IP和MAC)
之前配置的服务器,相当于对整个内网都是公开的 而且,除了可以通过80端口的nginx来间接访问各项服务,也可以绕过nginx,直接ip地址加端口访问对应服务 这是不对的啊,所以我们要做一些限制 因为只 ...
- [THINKING IN JAVA]访问权限控制
6 访问权限控制 6.1 包:库单元 package.import.import *.import static: 修改classpath环境变量可以将自己写的类库添加至环境变量并在任何java程序中 ...
- Java成员的访问权限控制
Java中的访问权限控制包含两个部分: 类的访问权限控制 类成员的访问权限控制 对类来说,访问权限控制修饰符可以是public或者无修饰符(默认的包访问权限): 对于类成员来说,访问权限控制修饰符可以 ...
- 浅析Java中的访问权限控制
浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但 ...
- redis密码设置、访问权限控制等安全设置
redis作为一个高速数据库,在互联网上,必须有对应的安全机制来进行保护,方法有2,如下. 1.比较安全的办法是采用绑定IP的方式来进行控制. 请在redis.conf文件找到如下配置 # If y ...
- JAVA访问权限控制[zhuan]
Java的访问权限控制修饰符,从最大权限到最小权限依次是:public.protected.包访问权限(默认,没有关键字)和private.对于类的访问权限只能是:public和包访问权限(但内部类可 ...
- C++中public/protect/private三种访问权限控制
一.成员访问权限控制 1.public (1)public成员变量可以被成员函数访问 [访问性] (2)public成员可以被实体对象访问 [访问性] (3)public成员可以成为子类成员 [ ...
随机推荐
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...
- JQuery跳出each循环的方法
一.jquery each循环,要实现break和continue的功能: break----用return false; continue --用return ture; 二.jquery怎么跳出当 ...
- mybatisGenerator代码生成器
使用mybatisGenerator可以生成实体类,Mapper接口以及对应xml文件.本文介绍如何使用. 可以直接从本人github下载,只需按照如下步骤即可: 1.导入项目至idea中,项目结构如 ...
- Dom事件流、冒泡、捕获
Dom事件流 dom的结构是一个倒立的树状结构.当一个html元素触发事件时,事件会在dom的根节点和触发事件的元素节点之间传播,中间的节点都会收到该事件. 捕获:div元素触发事件时,事件先从根节点 ...
- python提示AttributeError: 'NoneType' object has no attribute 'append'【转发】
在写python脚本时遇到AttributeError: 'NoneType' object has no attribute 'append' a=[] b=[1,2,3,4] a = a.appe ...
- php5.6,Ajax报错,Warning: Cannot modify header information - headers already sent in Unknown on line 0
php5.6ajax报错 Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be remo ...
- Python 协程 61
什么是协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程的特点 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到 ...
- Python Flask学习笔记之Hello World
Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...
- 哈夫曼(Huffman)树和哈夫曼编码
一.哈夫曼(Huffman)树和哈夫曼编码 1.哈夫曼树(Huffman)又称最优二叉树,是一类带权路径长度最短的树, 常用于信息检测. 定义: 结点间的路径长度:树中一个结点到另一个结点之间分支数目 ...
- 大数据解实例决topn问题
做大数据开发经常遇上在众多数据中统计前几的问题,比如王者荣耀每个区的富豪排行榜(腾讯可以做个刺激消费,