clickhouse 创建用户并授权

修改配置文件

ClickHouse默认创建一个数据库default,默认创建了一个用户default。我们现在针对default用户增加访问管理权限,因为该用户默认情况下是不具备管理员权限的,即:默认情况下,无法使用该用户添加角色、添加用户、以及其他权限管理操作。

所以为了让default用户的管理权限更大一些,我们修改 /etc/clickhouse-server/users.xml 文件,在users-> default标签中,将access_management的注释去掉。(在有些版本中其默认值是0,修改为1)

1
2
<!-- User can create other users and grant rights to them. -->
<access_management>1</access_management>

修改完成配置文件之后,重启clickhouse-server,使用如下命令:

1
clickhouse  restart

创建角色及用户

创建角色

用default账号登录,然后创建一个角色acaidb_rw, 该角色针对数据库acaidb具备读写权限。

1
2
CREATE ROLE acaidb_rw;
GRANT SELECT, INSERT, ALTER UPDATE, ALTER DELETE ON acaidb.* TO acaidb_rw;

如果让一个角色只允许select,不允许修改数据,下面的语句就可以。

1
2
CREATE ROLE acaidb_read;
GRANT SELECT ON acaidb.* TO acaidb_read;

创建普通账户并赋权

我们分别创建账户reader和writer,然后把只读角色ro分配给reader,把读写角色分配给writer。这样,reader拥有只读权限,writer拥有读写权限。新建一个数据库用户acai,并设置密码(将下文的<你的密码>替换)。并给用户acai赋予读写权限角色acaidb_rw 。

1
2
3
CREATE USER IF NOT EXISTS acai IDENTIFIED WITH sha256_password BY '<你的密码>';

GRANT acaidb_rw TO acai;

使用下列命令访问clickhouse数据,show databases得到acaidb,说明我们成功了。因为acai用户只能访问acaidb。

1
2
# clickhouse-client -m -u acai --password '<你的密码>' --query 'show databases;'
acaidb

clickhouse 创建用户并授权
https://randzz.cn/1bde256392a3/clickhouse-创建用户并授权/
作者
Ezreal Rao
发布于
2023年3月15日
许可协议