环境搭建:单机版安装与配置

说实话,很多初学者在 ClickHouse 上栽跟头,不是 SQL 写不对,而是环境没搭好。我见过太多人花一整天装了个跑不起来的服务,最后发现是配置文件里一个分号写错了位置。

这一章,咱们就把环境搭建这件事彻底搞定。你跟着我的步骤走,半小时内就能看到一个活蹦乱跳的 ClickHouse。

安装方式的选择

ClickHouse 官方提供了三种安装方式:RPM(Red Hat 系)、DEB(Debian 系)和 TGZ 通用包。我个人习惯用 RPM 或 DEB,因为省心——依赖自动处理,服务也能用 systemctl 管理。

安装方式 适用系统 推荐指数
RPM CentOS / RHEL / Fedora ⭐⭐⭐⭐⭐
DEB Ubuntu / Debian ⭐⭐⭐⭐⭐
TGZ 任意 Linux ⭐⭐⭐
Docker 任意(需 Docker) ⭐⭐⭐⭐
我的建议:如果你只是学习,用 Docker 最快。但生产环境我强烈推荐 RPM 或 DEB——性能更好,也方便后续升级。

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
我曾经踩过的坑:安装过程中会提示设置默认用户密码。如果你直接回车跳过,默认密码是空的。这在开发环境没问题,但生产环境一定要设密码!我见过有人把空密码的 ClickHouse 暴露到公网,结果被挖矿程序盯上了。

配置文件详解: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 单机环境搭建流程 选择安装方式 RPM / DEB / TGZ 安装执行 yum / apt-get install 配置文件修改 config.xml + users.xml 启动服务 systemctl start 验证状态 systemctl status 客户端连接 clickhouse-client 验证查询 SELECT version() 关键检查点 ✓ 进程运行中 ✓ 端口 8123/9000 监听 ✓ 客户端可执行查询 ✓ 防火墙放行 ✓ 日志无 ERROR

这张图把整个流程串起来了。你按这个顺序走,每一步都验证通过,环境就算搭好了。说白了,ClickHouse 的安装没那么玄乎——就是装包、改配置、启动、验证,四步走完。