更新时间:2025-07-24 GMT+08:00

配置ClickHouse用户权限

ClickHouse用户权限管理实现了对集群中各个ClickHouse节点上用户、角色、权限的统一管理。通过在控制台创建角色、创建用户、用户绑定角色方式,实现用户权限控制。

注意事项

  • 删除操作不可逆,即使删除后立即重新添加同名角色,也可能存在权限和以前不一致的情况。所以,删除角色前需确认此角色是否应用中。
  • 删除用户前需确认此账户是否再用。删除操作不可逆,即使删除后立即重新添加同名账户,也可能存在权限和以前不一致的情况。
  • admin、root和default用户是ClickHouse集群中默认的用户,不能删除。
  • 只有“用户管理”中的用户可以修改密码,root和默认用户的密码不可修改。
  • 不支持在集群的单节点上创建用户和角色。
  • 给角色授予某张表的权限之后,删除表时不会清除已经授予角色的该表的权限,重新创建同名表后角色会继承原有该表的权限。如果需要,可以手动清除已经授予角色的表的权限。
  • 给用户A授予表格B的操作权限,当用户A删除数据表B时需要先手动删除授予表格B的操作权限,否则用户C创建的同名表格,用户A可操作同名表,且有表格B同等的操作权限。
  • 组件不支持查看已有账户的密码,如果忘记密码可以通过重置密码功能设置新密码。

前提条件

  • 已创建ClickHouse集群,集群运行正常。
  • 已安装ClickHouse客户端。

步骤一:创建ClickHouse角色

  1. 登录CloudTable控制台。
  2. 在“集群管理”列表中选择目标集群,单击“集群名称 > 角色管理”,进入角色管理页面。
  3. 单击“新建角色”,弹出新建角色页面,配置表中相关参数。

    表1 角色权限说明

    参数

    说明

    角色名

    角色名称以字母开头,长度范围1~64。

    全局权限

    全局权限指拥有所有数据库和表的权限,包括查询、插入、更改、创建、删除权限。

    各级权限

    数据库和表,指的是集群中所创建的数据库和表。

    • 数据库有“高危权限”和普通权限;表只有“普通权限”。
    • 权限类别
      • 高危权限:创建表、删除表、创建视图、删除视图。
      • 普通权限:查询、插入、更改。

  4. 参数配置完成后,单击“确认”。

步骤二:创建ClickHouse用户

  1. 角色创建完成后,单击“用户管理”,进入用户管理页面。
  2. 单击“新建用户”,弹出“新建用户”页面,配置用户名、密码。

    表2 用户参数说明

    参数

    说明

    用户名

    新建用户名必须以字母开头,长度范围1~64。

    密码

    新建用户的密码。

    说明:

    设置密码规则:

    • 8~16个字符。
    • 至少包含以下字符中的4种:大写字母、小写字母、数字、特殊字符($@!%*?&)。
    • 不能与用户名或倒序的用户名相同。

    确认密码

    确认密码。

  3. 参数配置完成后,单击“确认”。

步骤三:ClickHouse用户绑定角色

例如:角色A拥有查询、插入、更改、创建、删除。用户绑定角色A后拥有角色A权限。

  1. 角色、用户创建完成后,在“用户管理”页面,选择目标用户,单击操作列“更多 > 分配角色”。
  2. 弹出“分配角色”页面,选择角色。单击“确定”。
  3. 单击操作列“查看权限”,用户拥有角色权限。
  4. 使用新建的用户连接集群。

    非安全集群连接命令,详细操作请参见使用客户端连接ClickHouse普通集群
    ./clickhouse client --host 集群内网地址   --port 9000 --user admin --password password

    安全集群连接命令,详细操作请参见使用ClickHouse客户端连接集群

    ./clickhouse client --host 集群内网地址   --port 9440 --user admin --password password --secure --config-file /root/config.xml

  5. 验证:在命令窗口中执行查询、插入、更改、创建、删除权限。

    • 如果可以执行查询、插入、更改、创建、删除权限,说明绑定角色成功。
    • 如果无法执行查询、插入、更改、创建、删除权限,请检查角色是否配置权限、用户是否绑定角色。以上两种情况无问题请联系技术人员处理。

管理用户权限

  • 管理角色
    • 删除角色:单击操作列“删除”,弹出删除的页面,输入“DELETE”或者单击“一键输入”,输入后单击“确定”,删除角色。
    • 修改角色权限:单击操作列“修改”,弹出“修改角色”页面,根据用户需求选择权限,单击“确定”。
    • 查看角色权限:单击操作列“查看权限”,弹出“查看权限”页面,查看角色当下拥有使用数据库和表的权限。
  • 管理用户
    • 查看用户权限:单击操作列“查看权限”,弹出“查看权限”页面,查看用户当下拥有使用数据库和表的权限。
    • 删除用户:单击操作列“删除”,弹出删除的页面,单击“确定”,删除用户。
    • 修改用户密码:单击操作列“更多 > 修改密码”,弹出“修改密码”页面,修改密码后单击“确定”。

用户权限常用命令

  • 存算一体用户权限使用命令
    1. 创建角色,role_name:指新建角色名称。
      CREATE role IF NOT EXISTS 'role_name' ON CLUSTER default_cluster;
    2. 给角色赋予权限。
      • 授予全部创建(库、表)权限。
        GRANT CREATE ON *.* TO role1 ON CLUSTER default_cluster;
      • 授予test_db库下创建表权限。
        GRANT CREATE TABLE ON test_db.* TO role1;
      • 授予全部删除(库、表)权限。
        GRANT DROP ON test_db.* TO role1;
    3. 删除角色。
      DROP ROLE 'role_name' ON CLUSTER default_cluster;
    4. 创建用户。
      CREATE USER  IF NOT EXISTS name ON CLUSTER default_cluster IDENTIFIED WITH sha256_password BY 'password';
    5. 指定IP。
      CREATE USER name HOST IP '127.0.0.x' IDENTIFIED WITH sha256_password BY 'password';
    6. 修改用户密码。
      ALTER USER  IF EXISTS name ON CLUSTER  default_cluster IDENTIFIED WITH sha256_password BY 'password';
    7. 给用户分配角色。
      GRANT role1, role2 TO new_user ON CLUSTER default_cluster;
    8. 撤销分配角色。
      REVOKE role1 FROM user ON CLUSTER default_cluster;
    9. 删除用户。
      DROP USER IF EXISTS ‘name1’ ON CLUSTER default_cluster;
    10. 查询用户的权限和角色。
      • 查询用户权限。
        show grants for all;
      • 查询角色权限。
        show grants for role1;