环境搭建:单机版安装与配置
说实话,很多初学者在 ClickHouse 上栽跟头,不是 SQL 写不对,而是环境没搭好。我见过太多人花一整天装了个跑不起来的服务,最后发现是配置文件里一个分号写错了位置。
这一章,咱们就把环境搭建这件事彻底搞定。你跟着我的步骤走,半小时内就能看到一个活蹦乱跳的 ClickHouse。
安装方式的选择
ClickHouse 官方提供了三种安装方式:RPM(Red Hat 系)、DEB(Debian 系)和 TGZ 通用包。我个人习惯用 RPM 或 DEB,因为省心——依赖自动处理,服务也能用 systemctl 管理。
| 安装方式 | 适用系统 | 推荐指数 |
|---|---|---|
| RPM | CentOS / RHEL / Fedora | ⭐⭐⭐⭐⭐ |
| DEB | Ubuntu / Debian | ⭐⭐⭐⭐⭐ |
| TGZ | 任意 Linux | ⭐⭐⭐ |
| Docker | 任意(需 Docker) | ⭐⭐⭐⭐ |
RPM 安装步骤(CentOS 7/8)
先添加官方 YUM 源。这一步很多人会忘,结果装了个老版本。
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
sudo yum install -y clickhouse-server clickhouse-client
安装完成后,你会看到两个主要组件:clickhouse-server 和 clickhouse-client。嗯,这里要注意——服务端和客户端是分开的包,别只装了客户端就跑去连。
DEB 安装步骤(Ubuntu 20.04/22.04)
Debian 系稍微麻烦一点,需要先导入 GPG 密钥:
sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client
配置文件详解:config.xml
ClickHouse 的配置体系很有意思——它用两个 XML 文件来管理:config.xml 管服务端全局配置,users.xml 管用户和权限。你想想看,这种分离设计其实很合理:运维改系统配置,DBA 改用户配置,互不干扰。
config.xml 默认在 /etc/clickhouse-server/ 目录下。核心配置项我列一下:
| 配置项 | 默认值 | 说明 |
|---|---|---|
<path> |
/var/lib/clickhouse/ |
数据存储目录 |
<tmp_path> |
/var/lib/clickhouse/tmp/ |
临时文件目录 |
<listen_host> |
::1 |
监听地址(默认只监听本地) |
<http_port> |
8123 |
HTTP 接口端口 |
<tcp_port> |
9000 |
原生 TCP 协议端口 |
<max_memory_usage> |
0 |
单次查询最大内存(0 表示不限制) |
我个人习惯,拿到新环境第一件事就是改 <listen_host>。默认只监听 IPv6 的本地地址,如果你用 IPv4 连,死活连不上。改成 0.0.0.0 就能监听所有地址了。
<!-- 允许远程连接 -->
<listen_host>0.0.0.0</listen_host>
0.0.0.0,应该指定具体的内网 IP。安全第一。
配置文件详解:users.xml
users.xml 同样在 /etc/clickhouse-server/ 下。它定义了用户、密码、权限和资源限制。默认只有一个 default 用户,密码为空。
看一个典型的用户配置:
<users>
<default>
<password></password>
<networks>
<ip>::1</ip>
<ip>127.0.0.1</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</default>
</users>
这里有几个关键点:
- password:可以明文写,也可以用 SHA256 加密。我建议用加密方式。
- networks:允许登录的 IP 白名单。默认只有本机能连。
- profile:引用
config.xml里定义的资源限制模板。 - quota:配额限制,防止某个用户把磁盘写爆。
设置加密密码的方法:
# 生成 SHA256 密码
PASSWORD=$(echo -n "your_password" | sha256sum | awk '{print $1}')
echo "SHA256:$PASSWORD"
然后把生成的字符串填到 <password> 标签里:
<password_sha256_hex>你的SHA256值</password_sha256_hex>
启动与验证
配置改好了,该启动了。用 systemctl 最方便:
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server # 设置开机自启
sudo systemctl status clickhouse-server # 查看状态
如果看到 active (running),恭喜你,服务跑起来了。但别急,咱们验证一下:
# 查看进程
ps aux | grep clickhouse
# 查看端口监听
netstat -tlnp | grep -E '8123|9000'
应该能看到 clickhouse-server 进程,以及 8123(HTTP)和 9000(TCP)端口在监听。
/var/log/clickhouse-server/clickhouse-server.log。我遇到过好多次,都是配置文件里某个标签没闭合导致的。
客户端连接
服务端跑起来了,用客户端连上去试试:
clickhouse-client --host 127.0.0.1 --port 9000 --user default --password
如果密码为空,直接回车就行。看到 clickhouse> 提示符,说明连上了。
来几个命令验证一下:
clickhouse> SELECT version();
┌─version()─┐
│ 23.8.1.1 │
└───────────┘
clickhouse> SELECT 1 + 1;
┌─plus(1, 1)─┐
│ 2 │
└────────────┘
clickhouse> SHOW DATABASES;
┌─name────┐
│ default │
│ system │
└─────────┘
看到这些输出,说明你的 ClickHouse 环境已经搭建完成了。
clickhouse-client 连远程服务器时,如果报 Connection refused,八成是防火墙没放行 9000 端口。别折腾配置文件了,先检查防火墙:
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
知识体系总览
下面这张图把本章的核心逻辑串起来了——从安装到配置,再到启动和验证,每一步都有对应的关键动作:
这张图把整个流程串起来了。你按这个顺序走,每一步都验证通过,环境就算搭好了。说白了,ClickHouse 的安装没那么玄乎——就是装包、改配置、启动、验证,四步走完。