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。
参考文档:
posted on 2019-05-16 15:08 uestc2007 阅读(1907) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性