本文介绍如何使用GRANT语句为云数据库ClickHouse的普通账号授予权限。

前提条件

  • 目标集群为社区兼容版集群。

  • 您的数据库账号为高权限账号或者具备GRANT权限的普通账号。

使用限制

GRANT语句仅支持为普通账号授DML操作的权限。

语法

GRANT [ON CLUSTER default]
    priv_type [(column_list [,...])] [,...]    
    ON priv_level
    TO {user | CURRENT_USER} [,...]
    [WITH GRANT OPTION]

参数说明

  • ON CLUSTER default:在每一个节点上都执行授权操作,固定为ON CLUSTER default

  • priv_type:权限类型。取值说明,请参见权限类型

  • column_list:可选参数。指定参数值时,授予指定列的权限。不指定时,授予所有列的权限。

    例如:当priv_typeSELECTcolumn_list为name时,表示为账号授予name列的SELECT权限。

  • priv_level:授权的级别。

    • *.*:集群级别。

    • db_name.*:数据库级别。

    • db_name.table_name或者table_name:表级别。

  • WITH GRANT OPTION:授予账号GRANT的权限。被授予GRANT权限的账号能够将自己被授予的权限再授予给其他账号。

示例

  • 为账号account2授予集群级别的all权限。

    GRANT ON CLUSTER default all ON *.* TO 'account2';
  • 为账号account3授予ck_demo数据库的all权限。

    GRANT ON CLUSTER default all ON ck_demo.* TO 'account3';
  • 为账号account1和account2授予SELECTINSERT权限。

    GRANT ON CLUSTER default SELECT,INSERT ON *.* TO 'account1','account2'
  • 通过CREATE USER创建账号,再通过GRANT授权账号。

    • 创建账号并给其授予集群级别DML权限。

      CREATE USER 'test' ON CLUSTER default IDENTIFIED WITH sha256_password BY 'Testpassword1';
      GRANT ON CLUSTER default INSERT,SELECT,ALTER,DROP on *.* to 'test';
    • 创建账号并给其授予ck_demo数据库的DML权限。

      CREATE USER 'test123' ON CLUSTER default IDENTIFIED WITH sha256_password BY 'Testpassword123';
      GRANT ON CLUSTER default INSERT,SELECT,ALTER,DROP on ck_demo.* to 'test123';
    • 创建账号并给其授予customer表中customer_id和gender列的SELECT权限。

      CREATE USER 'test321' ON CLUSTER default IDENTIFIED WITH sha256_password BY 'Testpassword321';
      GRANT ON CLUSTER default SELECT (customer_id, gender) ON customer to 'test321';