文档首页/ MapReduce服务 MRS/ 组件操作指南(普通版)/ 使用ClickHouse/ ClickHouse常见问题/ 如何为ClickHouse用户赋予数据库级别的Select权限
更新时间:2024-05-28 GMT+08:00

如何为ClickHouse用户赋予数据库级别的Select权限

操作步骤

  1. 登录到MRS集群装有ClickHouse客户端的节点,执行如下命令:

    su - omm

    source {客户端安装目录}/bigdata_env

    kinit 组件用户(普通集群无需执行kinit命令)

    clickhouse client --host clickhouse实例节点IP --port 9000 -m --user clickhouse -password 'clickhouse用户密码'

    • 查看ClickHouse用户密码:

      登录FusionInsight Manager界面,选择“集群 > 服务 > ClickHouse > 实例”,单击任意ClickHouseServer角色名称。进入ClickHouseServer“概览”页面,单击“配置文件”中的users.xml文件,查看ClickHouse用户密码。

    • 命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。

  2. 创建指定数据库只读权限角色,有如下两种方案:

    方案一:

    1. 创建指定数据库只读权限角色(以default数据库为例,下同):

      create role ck_role on cluster default_cluster;

      GRANT SELECT ON default.* TO ck_role on cluster default_cluster;

    2. 创建普通用户

      CREATE USER user_01 on cluster default_cluster IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'password';

    3. 将只读权限角色赋予普通用户

      GRANT ck_role to user_01 on cluster default_cluster;

    4. 查看用户权限

      show grants for user_01;

      select * from system.grants where role_name = 'ck_role';

    方案二:

    创建指定数据库只读权限用户:

    1. 创建用户:

      CREATE USER user_01 on cluster default_cluster IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'password';

    1. 给用户赋予指定数据库的查询权限:

      grant select on default.* to user_01 on cluster default_cluster;

    2. 查询用户权限:

      select * from system.grants where user_name = 'user_01';