ClickHouse的多种连接方式

一、ClickHouse多种连接方式

ClickHouse官方以及一些第三方提供了多种方式连接到服务端

  • 命令行接口:clickhouse-client
  • HTTP接口
  • MySQL客户端接口
  • C++客户端
  • JDBC驱动
  • ODBC驱动
  • 第三方提供
    • 各种客户端库:Python/Go/Perl/Ruby/……
    • 可视界面:Tabix/DataGrip/……
    • 集成产品:puppet/Prometheus/Zabbix/……

官方提供了许多方式连接到服务端,这里目前只测试了需要使用到的HTTP接口、MySQL客户端接口以及可视界面这几种方法,后续其他有需要再进行更新

二、HTTP接口连接ClickHouse

2.1、修改配置文件

1
2
3
4
5
6
# 默认官方rpm包、docker等安装后提供的http端口为8123,可根据需要修改配置文件,默认配置文件路径为'/etc/clickhouse-server/config.xml'
vim /etc/clickhouse-server/config.xml
<http_port>8123</http_port> ## 可将端口修改为需要的端口,重启clickhouse服务即可
# 利用rpm包等进行安装的重启服务即可
# 若利用docker安装需要在外部可以直接访问需要重新docker run并使用-p参数将容器端口映射到本地端口
docker run -d --name clickhouse-test-server --ulimit nofile=262144:262144 -p 8123:8123 --volume=/work/clickhouse/clickhouse_test_db:/var/lib/clickhouse yandex/clickhouse-server

2.2、通过http接口访问

2.2.1、端口检查

1
curl 'http://localhost:8123/'

2.2.2、接口使用

1
2
3
4
5
6
7
8
9
10
# select 示例
echo '1' | curl 'http://localhost:8123/?query=SELECT' --data-binary @-

curl 'http://localhost:8123/?query=SELECT%201'

## 利用format指定输出格式
echo 'SELECT 1 FORMAT Pretty' | curl 'http://localhost:8123/?' --data-binary @-

# 创建数据必须通过post接口实现
echo 'INSERT INTO t VALUES (1),(2),(3)' | POST 'http://localhost:8123/'

三、MySQL客户端连接ClickHouse

​ 目前MySQL数据库使用率比较高,通过以下方法可以直接从MySQL客户端直接连接到ClickHouse

3.1、修改配置文件

1
2
3
4
5
6
7
# 在配置文件中新增mysql端口
vim /etc/clickhouse-server/config.xml
<mysql_port>9004</mysql_port> ## 开启mysql接口,但此时仅可以本地访问
## 若需要其他ip访问,添加下面配置,并写入允许访问地址
<listen_host>::</listen_host> ## 开启对应的可访问地址

# 配置完成后重启服务即可

3.2、MySQL连接ClickHouse

1
mysql --protocol tcp -u default -P 9004 -h[服务器ip]

四、可视界面连接ClickHouse

​ 很多软件官方都提供了clickhouse的连接方法,仅对web页面tabix以及DataGrip连接做了测试,配置好的页面如下:

其余方法可参考官方提供的入口:https://clickhouse.tech/docs/zh/interfaces/third-party/gui/

4.1、tabix连接

使用tabix连接必须打开ClickHouse的HTTP连接接口

tabix访问页面

​ 输入对应配置即可看到对应数据库界面:

4.2、DataGrip连接测试

​ 和tabix连接类似,新增数据库类型为ClickHouse并输入配置参数连接即可,最终效果图如下: