打开配置文件 /etc/clickhouse-server/users.xml
<?xml version="1.0"?>
<yandex>
<profiles><!-- 类似于角色的作用,支持继承-->
<default><!-- 自定义名称,默认角色-->
<max_memory_usage>10000000000</max_memory_usage>
<load_balancing>random</load_balancing>
</default>
<test1> <!-- 自定义名称,默认角色-->
<allow_experimental_live_view>1</allow_experimental_live_view>
<distributed_product_mode>allow</distributed_product_mode>
</test1>
</profiles>
<users><!-- 定义用户信息 -->
<default>
<password></password>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</default>
<user_demo>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<password>123</password>
<profile>default</profile>
<quota>default</quota>
</user_demo>
<root>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<password_sha256_hex>4813494d137e1631bba301d5acab6e7bb7aa74ce1185d456565ef51d737677b2</password_sha256_hex>
<profile>default</profile>
<quota>default</quota>
</root>
</users>
<quotas> <!-- 配置熔断信息 -->
<default>
<interval>
<duration>3600</duration>
<errors>0</errors>
<result_rows>0</result_rows>
<read_rows>0</read_rows>
<execution_time>0</execution_time>
</interval>
</default>
</quotas>
</yandex>
找到 users 标签, profile是用户所用的profile配置,直接引用相应的名称即可。quota是设置该用户能使用的资源限额,可以理解为一种熔断机制。ip是限制用户登录的ip地址,也可以用 host 标签
如下图所示
- default 是默认用户,没有配置密码,即不需要填写用户名和密码就可以连接ck
- user_demo 是使用的明文密码
- root 使用的是 SHA256 加密
#生成 SHA256 加密字符串,root 是你要加密的字符串
echo -n root | openssl dgst -sha256
# 使用用户名密码登录 ck
clickhouse-client -n root --password root;
clickhouse-client -n user_demo --password 123;
<ip>127.0.0.1</ip>
<host>xxx.xxx.com</host>
<host>正则匹配内容</host>
配置用户访问数据库和字典的权限
<allow_databases>
<database>xxx</database>
<database>xxx2</database>
</allow_databases>
<allow_dictionaries>
<dictionariy>xxx</dictionariy>
</alow_dictionaries>
测试:新增两个角色 role1 和 role2
<profiles>
...
<role1> <!-- 只有读权限 -->
<readonly>1</readonly>
<allow_ddl>0</allow_ddl>
</role1>
<role2> <!-- 有读权限和设置参数权限 -->
<readonly>2</readonly>
<allow_ddl>0</allow_ddl>
</role2>
</profiles>
数据行级权限,可以通过条件进行过滤
<role1>
...
<databases>
<default><!--默认数据库-->
<test_row_level><!--表名称-->
<filter>id < 10</filter>
</test_row_level>
<!--支持组合条件 <test_query_all>
<filter>id <= 100 or repo >= 100</filter>
</test_query_all> -->
</default>
</databases>
</role1>
当使用的资源数量达到阈值,那么正在进行的操作就会中断
<quotas>
<default> <!-- 自定义名称 -->
<interval>
<duration>3600</duration><!-- 时间周期 单位:秒 -->
<queries>0</queries>
<errors>0</errors>
<result_rows>0</result_rows>
<read_rows>0</read_rows>
<execution_time>0</execution_time>
</interval>
</default>
</quotas>
适用于数据体量较小
clickhouse-client --query="SELECT * FROM table_name" > /chbase/table_name.tsv
cat /chbase/table_name.tsv | clickhouse-client --query "INSERT INTO table_name FORMAT TSV"
优势:
就是一张普通表,按照一定的频率备份业务表数据,然后使用 INSERT INTO SELECT 插入数据
CREATE TABLE table_backup_01_01 as table_backup;
INSERT INTO TABLE table_backup_01_01 SELECT * FROM table_backup;
ALTER TABLE tb_name FREEZE PARTITION xxxx
ALTER TABLE tb_name FETCH PARTITION xxx FROM zk_path
具体备份操作可以查看
ClickHouse 备份与恢复 -万能修实验室
ClickHouse 管理与运维(用户配置&权限配置&备份)
原文:https://www.cnblogs.com/crazy-rabbit/p/14708583.html