【ClickHouse】2:clickhouse基本语法
背景介绍:
有三台CentOS7服务器安装了ClickHouse
HostName | IP | 安装程序 | 程序端口 |
centf8118.sharding1.db | 192.168.81.18 | clickhouse-server,clickhouse-client | 9000 |
centf8119.sharding2.db | 192.168.81.19 | clickhouse-server,clickhouse-client | 9000 |
centf8120.sharding3.db | 192.168.81.20 | clickhouse-server,clickhouse-client | 9000 |
一:登录数据库
本地登录:clickhouse-client
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | [root@centf8118 format_schemas]# clickhouse-client ClickHouse client version 20.6.4.44 (official build). Connecting to localhost:9000 as user default . Connected to ClickHouse server version 20.6.4 revision 54436. centf8118.sharding1.db :) show databases; SHOW DATABASES ┌─ name ───────────────────────────┐ │ _temporary_and_external_tables │ │ default │ │ system │ │ testdb │ └────────────────────────────────┘ 4 rows in set . Elapsed: 0.003 sec. centf8118.sharding1.db :) select now(); SELECT now() ┌───────────────now()─┐ │ 2020-08-26 15:11:22 │ └─────────────────────┘ 1 rows in set . Elapsed: 0.010 sec. centf8118.sharding1.db :) |
远程登录:(用本机clickhouse-client连接远程clickhouse-server服务器)
clickhouse-client --host 192.168.81.20 --port 9000 --database default --user default --password ""
如果登录不上,telnet一下端口,看通不通。
telnet ping 192.168.81.20 9000
1 2 3 | [root@centf8118 ~]# telnet 192.168.81.20 9000 Trying 192.168.81.20 ... telnet: connect to address 192.168.81.20: Connection refused |
如果telent不同,查看iptables有没有添加端口。(三台机器都添加,我这里是添加的都是IP和端口区间,按实际需求配置。)
1 | -A INPUT -p tcp -m iprange --src-range 192.168.81.18-192.168.81.20 -m tcp --dport 9000:9200 -j ACCEPT |
如果iptables都配置了9000端口还是不通。查看监听端口:
1 2 | [root@centf8118 ~] # netstat -anltp|grep :9000 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 22710 /clickhouse-se |
如果是127.0.0.1:9000需要修改配置,放开远程访问。
vim /etc/clickhouse-server/config.xml
修改配置文件中的注释掉的<listen_host>0.0.0.0</listen_host>放出来。
修改配置后重启服务: server clickhouse-server restart
再次查看监听端口:
1 2 | [root@centf8118 ~]# netstat -anltp|grep :9000 tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 6060/clickhouse-ser |
再尝试登录数据库:(安装后系统默认会创建一个登录账号default,密码为空字符串)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [root@centf8118 ~]# clickhouse-client --host 192.168.81.20 --port 9000 --database default --user default --password "" ClickHouse client version 20.6.4.44 (official build). Connecting to database default at 192.168.81.20:9000 as user default . Connected to ClickHouse server version 20.6.4 revision 54436. centf8120.sharding3.db :) show databases; SHOW DATABASES ┌─ name ───────────────────────────┐ │ _temporary_and_external_tables │ │ default │ │ system │ │ testdb │ │ tutorial │ └────────────────────────────────┘ 5 rows in set . Elapsed: 0.004 sec. centf8120.sharding3.db :) |
客户端登录,默认是一行一段完整的SQL,如果是多行的sql,就会一行行执行并报错。
clickhouse-client -m 可以支持多行SQL;
二:角色账号相关操作
官方文档:https://clickhouse.tech/docs/en/sql-reference/statements/create/role/
# 创建角色,账号
1 2 | CREATE ROLE [IF NOT EXISTS | OR REPLACE ] name [SETTINGS variable [= value] [ MIN [=] min_value] [ MAX [=] max_value] [READONLY|WRITABLE] | PROFILE 'profile_name' ] [,...] |
1 2 3 4 5 | CREATE USER [IF NOT EXISTS | OR REPLACE ] name [ ON CLUSTER cluster_name] [IDENTIFIED [ WITH {NO_PASSWORD|PLAINTEXT_PASSWORD|SHA256_PASSWORD|SHA256_HASH|DOUBLE_SHA1_PASSWORD|DOUBLE_SHA1_HASH}] BY { 'password' | 'hash' }] [HOST { LOCAL | NAME 'name' | REGEXP 'name_regexp' | IP 'address' | LIKE 'pattern' } [,...] | ANY | NONE] [ DEFAULT ROLE role [,...]] [SETTINGS variable [= value] [ MIN [=] min_value] [ MAX [=] max_value] [READONLY|WRITABLE] | PROFILE 'profile_name' ] [,...] |
Examples:
1 2 3 4 5 6 7 8 | # 创建角色并赋予权限 CREATE ROLE accountant; GRANT SELECT ON db.* TO accountant; # 给用户添加角色 GRANT accountant TO mira;# 修改角色 SET ROLE accountant; SELECT * FROM db.*; |
1 2 3 4 5 6 7 | CREATE USER mira HOST IP '127.0.0.1' IDENTIFIED WITH sha256_password BY 'qwerty' CREATE USER john DEFAULT ROLE role1, role2 ALTER USER user DEFAULT ROLE ALL ALTER USER john DEFAULT ROLE ALL EXCEPT role1, role2 |
# 查询角色,账号
# 修改角色,账号
1 2 3 | ALTER ROLE [IF EXISTS] name [ ON CLUSTER cluster_name] [RENAME TO new_name] [SETTINGS variable [= value] [ MIN [=] min_value] [ MAX [=] max_value] [READONLY|WRITABLE] | PROFILE 'profile_name' ] [,...] |
1 2 3 4 5 6 | ALTER USER [IF EXISTS] name [ ON CLUSTER cluster_name] [RENAME TO new_name] [IDENTIFIED [ WITH {PLAINTEXT_PASSWORD|SHA256_PASSWORD|DOUBLE_SHA1_PASSWORD}] BY { 'password' | 'hash' }] [[ ADD | DROP ] HOST { LOCAL | NAME 'name' | REGEXP 'name_regexp' | IP 'address' | LIKE 'pattern' } [,...] | ANY | NONE] [ DEFAULT ROLE role [,...] | ALL | ALL EXCEPT role [,...] ] [SETTINGS variable [= value] [ MIN [=] min_value] [ MAX [=] max_value] [READONLY|WRITABLE] | PROFILE 'profile_name' ] [,...] |
# 删除角色,账号
1 2 3 4 | DROP ROLE [IF EXISTS] name [,...] [ ON CLUSTER cluster_name] DROP USER [IF EXISTS] name [,...] [ ON CLUSTER cluster_name] |
三:数据库相关操作
官方文档:https://clickhouse.tech/docs/en/sql-reference/statements/create/database/
# 创建数据库
1 | CREATE DATABASE [IF NOT EXISTS] db_name [ ON CLUSTER cluster] [ENGINE = engine(...)] |
# 查询数据库
1 | SHOW DATABASES [ INTO OUTFILE filename] [FORMAT format] |
# 删除数据库
1 | DROP DATABASE [IF EXISTS] db [ ON CLUSTER cluster] |
四:表相关操作
# 创建表
1 2 3 4 5 6 7 | # 新创建表 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ ON CLUSTER cluster] ( name1 [type1] [ DEFAULT |MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1], name2 [type2] [ DEFAULT |MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2], ... ) ENGINE = engine |
1 2 | # 拷贝已存在的表结构 CREATE TABLE [IF NOT EXISTS] [db.]table_name AS [db2.]name2 [ENGINE = engine] |
# 查询表
1 | SHOW [ TEMPORARY ] TABLES [{ FROM | IN } <db>] [ LIKE '<pattern>' | WHERE expr] [LIMIT <N>] [ INTO OUTFILE <filename>] [FORMAT <format>] |
1 | SELECT name FROM system.tables WHERE database = <db> [ AND name LIKE <pattern>] [LIMIT <N>] [ INTO OUTFILE <filename>] [FORMAT <format>] |
# 删除表
1 | DROP [ TEMPORARY ] TABLE [IF EXISTS] [db.] name [ ON CLUSTER cluster] |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想