clickhouse创建角色和用户
clickhouse版本:22.2.2.1
更改default账户权限
ClickHouse提供了一个default账号,这个账号有所有的权限,但是不能使用SQL驱动方式的访问权限和账户管理。我们需要在配置文件中修改default账户,使其能够通过SQL驱动方式添加角色和用户。默认default用户是没有办法创建用户的,这时候需要我们修改配置文件users.xml,便能创建用户了,详见官网
修改 /etc/clickhouse-server/users.xml 文件,在<users>:<default>标签中,将<access_management></access_management>中的值从0改成1。
<networks> <ip>::/0</ip> </networks> <!-- Settings profile for user. --> <profile>default</profile> <!-- Quota for user. --> <quota>default</quota> <!-- User can create other users and grant rights to them. --> <access_management>1</access_management> # 该部分控制权限,把原本注释去掉就能建用户了 # 下面这几行也要加,不然授权all的时候会提示权限不足 <named_collection_control>1</named_collection_control> <show_named_collections>1</show_named_collections> <show_named_collections_secrets>1</show_named_collections_secrets> </default> # 修改后需要重启clickhouse服务
2. 重启clickhouse-server
service clickhouse-server restart
创建管理员
创建管理员账户,并为其分配所有权限。
CREATE USER IF NOT EXISTS admin IDENTIFIED WITH sha256_password BY 'password'GRANT ALL ON *.* TO admin WITH GRANT OPTION
登录管理员账户
假设有一个数据库名为test。接下来,登录管理员账户,然后为test添加读写账户。
clickhouse-client -u admin --password password
创建普通角色
创建只读角色
该角色只能读取test的数据。
CREATE ROLE ro
GRANT SELECT ON test.* TO ro
创建读写角色
该角色可以读写test的数据。
CREATE ROLE rw
GRANT SELECT, INSERT, ALTER UPDATE, ALTER DELETE ON test.* TO rw
创建普通账户
我们分别创建账户reader和writer,然后把只读角色ro分配给reader,把读写角色分配给writer。这样,reader拥有只读权限,writer拥有读写权限。
CREATE USER IF NOT EXISTS reader IDENTIFIED WITH sha256_password BY 'password'
GRANT ro TO reader
CREATE USER IF NOT EXISTS writer IDENTIFIED WITH sha256_password BY 'password'
GRANT rw TO writer