一、官方网址
访问权限和账户管理 | ClickHouse Docs
默认ClickHouse提供了一个 default 账号,这个账号有所有的权限,但是不能使用SQL驱动方式的访问权限和账户管理。default主要用在用户名还未设置的情况,比如从客户端登录或者执行分布式查询。在分布式查询中如果服务端或者集群没有指定用户名密码那默认的账户就会被使用
查看用户信息:SELECT * from `system`.users;
查看角色信息:SELECT *from `system`.roles;
查看用户角色:SELECT *from system.role_grants;
查看角色权限:SELECT *from `system`.grants;
二、初始用户设置
在安装完Clickhouse后,可以按照default用户进行登录。后续需要自行创建其他用户进行管理。本文通过创建三个角色 role_admin (查看全部数据库全部权限最高权限角色)、
role_read(只读数据库权限)、role_write(读写数据库权限,不可操作用户)
以及对应三个用户user_admin、user_read、user_write进行后续使用
可以通过两种方式配置
三、方式一 通过用户配置文件
需要登录虚拟机配置,不方便操作,不太推荐
user.xml 中的 users 配置段包含了用户配置
<users>
<!-- If user name was not specified, 'default' user is used. -->
<user_name>
<password></password>
<!-- Or -->
<password_sha256_hex></password_sha256_hex><access_management>0|1</access_management>
<networks incl="networks" replace="replace">
</networks><profile>profile_name</profile>
<quota>default</quota>
<databases>
<database_name>
<table_name>
<filter>expression</filter>
<table_name>
</database_name>
</databases>
</user_name>
<!-- Other users settings -->
</users>
user_name/password
密码可以以明文或SHA256(十六进制格式)指定。
-
以明文形式分配密码 (不推荐),把它放在一个
password配置段中。例如,
<password>qwerty</password>. 密码可以留空。 -
要使用SHA256加密后的密码,请将其放置在
password_sha256_hex配置段。例如,<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>.
从shell生成加密密码的示例:
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
结果的第一行是密码。 第二行是相应的SHA256哈希。
access_management
此设置可为用户启用或禁用 SQL-driven 访问控制和帐户管理 。
可能的值:
- 0 — Disabled.
- 1 — Enabled.
默认值:0。
user_name/networks
用户访问来源列表
列表中的每个元素都可以具有以下形式之一:
-
<ip>— IP地址或网络掩码例:
213.180.204.3,10.0.0.1/8,10.0.0.1/255.255.255.0,2a02:6b8::3,2a02:6b8::3/64,2a02:6b8::3/ffff:ffff:ffff:ffff::. -
<host>— 域名示例:
example01.host.ru.为检查访问,将执行DNS查询,并将所有返回的IP地址与对端地址进行比较。
-
<host_regexp>— 域名的正则表达式.示例,
^example\d\d-\d\d-\d\.host\.ru$为检查访问,DNS PTR查询 对对端地址执行,然后应用指定的正则表达式。 然后,以PTR查询的结果执行另一个DNS查询,并将所有接收到的地址与对端地址进行比较. 我们强烈建议正则表达式以$结尾.
DNS请求的所有结果都将被缓存,直到服务器重新启动
例
要开启任意来源网络的访问, 请指定:
<ip>::/0</ip>
若要限定本机访问, 请指定:
<ip>::1</ip>
<ip>127.0.0.1</ip>
user_name/profile
您可以为用户分配设置配置文件。 设置配置文件在users.xml 中有单独的配置段. 有关详细信息,请参阅 设置配置文件
user_name/quota
配额允许您在一段时间内跟踪或限制资源使用情况。 配额在users.xml 中的 quotas 配置段下.
您可以为用户分配配额。 有关配额配置的详细说明,请参阅 配额.
user_name/databases
在本配置段中,您可以限制ClickHouse中由当前用户进行的 SELECT 查询所返回的行,从而实现基本的行级安全性。
示例
以下配置使用户 user1 通过SELECT查询只能得到table1中id为1000的行
<user1>
<databases>
<database_name>
<table1>
<filter>id = 1000</filter>
</table1>
</database_name>
</databases>
</user1>
该 filter 可以是UInt8编码的任何表达式。 它通常包含比较和逻辑运算符, 当filter返回0时, database_name.table1 的该行结果将不会返回给用户.过滤不兼容 PREWHERE 操作并禁用 WHERE→PREWHERE 优化
四、配置文件方式不灵活,不推荐使用。请更多来参考下篇文章
SQL工作流 -配置用户角色
1143

被折叠的 条评论
为什么被折叠?



