Clickhouse Docker

docker 安装 clickhouse 单机版

Posted on 2021-01-27,3 min read

直接运行, docker 会自动帮你拉取镜像:

docker run -d --name ch-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server

查看镜像

[root@ly-A2 ~]# docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS                                                                    NAMES
d00724297352        yandex/clickhouse-server   "/entrypoint.sh"    9 seconds ago       Up 8 seconds        0.0.0.0:8123->8123/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:9009->9009/tcp   ch-server

进入 Clickhouse 容器

docker exec -it d00724297352 /bin/bash

需要注意的是, 默认的容器是一个依赖包不完整的 ubuntu 虚拟机

所以我们需要安装 vim

apt-get update
apt-get install vim -y

进入 clickhouse-server 目录并查看目录

cd /etc/clickhouse-server

查看目录

root@d00724297352:/etc/clickhouse-server# ll
total 52
drwxr-xr-x 1 root root  4096 May 14 18:29 ./
drwxr-xr-x 1 root root  4096 May 22 08:12 ../
drwxr-xr-x 1 root root  4096 May 14 18:29 config.d/
-rw-r--r-- 1 root root 26466 May  8 19:38 config.xml
lrwxrwxrwx 1 root root    41 May 14 18:29 preprocessed -> /var/lib/clickhouse//preprocessed_configs/
drwxr-xr-x 2 root root  4096 May 14 18:29 users.d/
-rw-r--r-- 1 root root  5328 May  8 19:38 users.xml

修改 clickhouse 的用户密码需要在 users.xml 中配置

需要注意的是: 密码必须为加密过的形式, 否则会一直连不上。

我们这次采用 SHA256 的方式加密

PASSWORD=$(base64 < /dev/urandom | head -c8); echo "你的密码"; echo -n "你的密码" | sha256sum | tr -d '-'

执行以上命令后会在命令行打印密码明文和密码密文, 如下

root(密码明文)
4813494d137e1631bba301d5acab6e7bb7aa74ce1185d456565ef51d737677b2

vim user.xml 修改用户密码

将 55 行的 替换为 <password_sha256_hex> 密码密文 </password_sha256_hex>
不需要重启即可登录

clickhouse-client -h 127.0.0.1 -d default -m -u default --password '你的密码'

客户端常用参数
clickhouse-client
--host, -h :服务端host名称,默认 localhost
--port :连接端口,默认9000
--user, -u :用户名,默认 default
--password :密码,默认空
--query, -q :非交互模式下的查询语句
--database, -d :默认当前操作的数据库,默认default
--multiline, -m :允许多行语句查询,在clickhouse中默认回车即为sql结束,可使用该参数多行输入
--format, -f :使用指定的默认格式输出结果 csv,以逗号分隔
--time, -t :非交互模式下会打印查询执行的时间
--stacktrace :出现异常会打印堆栈跟踪信息
--config-file :配置文件名称

登录成功

d00724297352 😃 show databases;

SHOW DATABASES

┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ default │
│ system │
└────────────────────────────────┘

3 rows in set. Elapsed: 0.002 sec.

下一篇: Redis 的几种数据导入导出方式→