Clickhouse 创建用户、角色、授权、回收权限

当我们需要创建用户并进行设置读写的权限时,有两种方式, 一种是在配置文件中配置, 一种是通过sql方式配置。

第一种方式 配置

编辑 /etc/clickhouse-server/user.xml

<?xml version="1.0"?>
<clickhouse>
    <!-- Profiles of settings. -->
    <profiles>
        <!-- Default settings. -->
        <default>
            <max_memory_usage>10</max_memory_usage>
            <max_bytes_before_external_group_by>5</max_bytes_before_external_group_by>
            <max_bytes_before_external_sort>5</max_bytes_before_external_sort>
            <load_balancing>random</load_balancing>
        </default>

        <!-- Profile that allows only read queries. -->
        <readonly>
            <readonly>1</readonly>
        </readonly>
	<!-- 写用户-->
	<ck_writer>
	    <load_balancing>random</load_balancing>
	</ck_writer>
	<!-- 只读用户-->
	<ck_reader>
	    <readonly>2</readonly>
	    <allow_ddl>0</allow_ddl>
	</ck_reader>
    </profiles>

    <!-- Users and ACL. -->
    <users>
        <default>
            <!-- User can create other users and grant rights to them. -->
            <!-- <access_management>1</access_management> -->
        </default>
	<admin>
		<password>123456</password>
		<networks><ip>::/0</ip></networks>
        <profile>default</profile>
        <quota>default</quota>
        <!-- 用户可以创建其他用户并授予他们权限。-->
		<access_management>1</access_management>
	</admin>	
	<ck_writer>
		<password>123456</password>
         <networks><ip>::/0</ip></networks>
         <profile>ck_writer</profile>
         <quota>default</quota>
	</ck_writer>
	<ck_reader>
		<password>123456</password>
		<networks><ip>::/0</ip></networks>
		<profile>ck_reader</profile>
		<quota>default</quota>
    	<default_database>test_db</default_database>
    	<!-- 设置读账号能看到的数据库-->
		<allow_databases>
		    <database>test_db</database>
		    <database>default</database>
		    <database>system</database>
		</allow_databases>
	</ck_reader>
    </users>

    <!-- Quotas. -->
    <quotas>
        <default>
            <!-- 忽略 -->
        </default>
    </quotas>
</clickhouse>

上面通过配置方式,创建了两个账号,一个是只读、一个是读写

第二种方式:sql方式

第一步、需要有一个授权的账号, 可通过上面第一种方式配置
/etc/clickhouse-server/user.xml

<users>
    <default>
        <!-- ...... -->
    </default>
    <admin>
        <password>123456</password>
        <networks><ip>::/0</ip></networks>
        <profile>default</profile>
        <quota>default</quota>
        <!-- 设置权限管理的能力 -->
        <access_management>1</access_management>
    </admin>
</users>

第二步、创建用户、角色、授权角色给用户

-- 创建用户 guaoran、明文明码:123456
create user if not exists guaoran on cluster my_cluster 
IDENTIFIED WITH plaintext_password BY '123456';

-- 创建角色 guaoran_role
create role if not exists guaoran_role on cluster my_cluster ;


-- 授权 test_db 库查询权限给 角色 guaoran_role
GRANT SELECT ON test_db.* TO guaoran_role on cluster my_cluster ;

-- 分配角色给用户 guraoran
GRANT guaoran_role TO guaoran on cluster my_cluster ;

如果想收回角色的权限

-- 收回角色 guaoran_role  的查询权限 
REVOKE SELECT ON test_db.* FROM guaoran_role on cluster my_cluster ;

第三步、登录查看

clickhouse-client --host 127.0.0.1 --user guaoran --password 123456

创建只读账号的权限

-- 创建用户 reader、明文明码:123456
create user if not exists reader on cluster my_cluster 
IDENTIFIED WITH plaintext_password BY '123456';

-- 创建角色 reader_role
create role if not exists reader_role on cluster my_cluster ;

-- 授权角色 reader_role 可以读test_db/system 数据库
GRANT SELECT ON test_db.* TO reader_role on cluster my_cluster ;
GRANT SELECT ON system.* TO reader_role on cluster my_cluster ;

-- 授权 reader_role  角色给 reader 用户
GRANT reader_role TO reader on cluster my_cluster  ;

创建读写账号的权限


-- 创建用户 writer、明文明码:123456
create user if not exists writer on cluster my_cluster 
IDENTIFIED WITH plaintext_password BY '123456';
-- 创建角色 wirter_role
create role if not exists wirter_role on cluster my_cluster ;
-- 授权角色 wirter_role  可以读写所有数据库
GRANT SHOW, SELECT, INSERT, ALTER, CREATE, DROP, TRUNCATE, OPTIMIZE, KILL QUERY, MOVE PARTITION BETWEEN SHARDS, SYSTEM, dictGet, INTROSPECTION, SOURCES ON *.* TO wirter_role on cluster my_cluster ;

-- 授权 wirter_role  角色给 guaoran 用户
GRANT wirter_role TO guaoran on cluster my_cluster ;

-- 收回 guaoran 用户 wirter_role  角色
REVOKE wirter_role from guaoran on cluster my_cluster ;

查看所有角色信息

首先保证该账号已经配置了管理权限的能力,即:

<access_management>1</access_management>

通过该命令可以查看当前所有的权限

SHOW ACCESS
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值