本页内容
- 准备工作
- 系统环境准备
- 安装 ClickHouse OLAP 数据库系统
- 通过命令行访问 ClickHouse
- 在 ClickHouse 上设置管理员用户
- ClickHouse 数据库系统的基本查询
- 清理环境
- 总结
ClickHouse 是由 ClickHouse, Inc. 开发、使用 C++ 编写的一款列式数据库管理系统。它是一个开源的 OLAP 数据库管理系统,具有速度快、容错性强、易于使用且高度可靠的特点。
ClickHouse 是一款极速的 OLAP(联机分析处理)数据库系统。它允许您通过 SQL 查询实时生成分析报告。
在本教程中,您将学习如何在 Ubuntu 22.04 服务器上安装 ClickHouse OLAP 数据库系统。您还将学习如何在 ClickHouse 上配置身份验证,并了解其基础用法和查询方式。
准备工作
要完成本教程,您需要满足以下先决条件:
- 一台 Ubuntu 22.04 服务器 —— 本示例使用的 Ubuntu 系统主机名为 'clickhouse-server',IP 地址为 '192.168.5.100'。
- 一个具有 sudo/root 管理员权限的非 root 用户。
系统环境准备
在开始安装 ClickHouse 之前,您需要确保当前 CPU 支持 SSE 4.2 指令集,并在系统中禁用 SWAP 交换分区。
ClickHouse 官方预编译的二进制软件包基于 x86(64 位)架构和 SSE 4.2 指令集编译。因此,如果您的 CPU 不支持 SSE 4.2,则应从源码手动编译 ClickHouse。
此外,在使用 ClickHouse 时,建议禁用 SWAP,尤其是在生产环境中。
运行以下命令检查您的 CPU 是否支持 SSE 4.2 特性。如果您的 CPU 受支持,您将看到输出 'SSE 4.2 supported'。
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
接下来,运行以下命令通过 ' /etc/fstab ' 配置文件禁用 SWAP。该命令会在 SWAP 配置行开头添加 '#',从而永久禁用系统中的 SWAP。
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
现在运行以下命令,在当前会话中关闭 SWAP。然后验证 SWAP 状态。
sudo swapoff -a
sudo free -m
如果 SWAP 已禁用,您将看到如下输出 —— 'total' 字段中的 SWAP 大小为 0。

在 CPU 支持 SSE 4.2 且 SWAP 已禁用后,您现在可以开始安装 ClickHouse OLAP 数据库系统了。
安装 ClickHouse OLAP 数据库系统
ClickHouse OLAP 数据库系统提供多种安装方式。对于 Linux 发行版,ClickHouse 提供了适用于 Debian 系和 RPM 系发行版的软件仓库。此外,ClickHouse 也支持通过 Docker 或使用单一二进制包进行安装。
在本步骤中,您将通过官方软件仓库在 Ubuntu 22.04 系统上安装 ClickHouse。为此,您需要将 ClickHouse 仓库添加到系统中,然后通过 APT 安装 ClickHouse 软件包。
首先,运行以下 apt 命令安装一些基础依赖。出现提示时,输入 y 并按回车键。
sudo apt install apt-transport-https ca-certificates dirmngr

现在运行以下命令,将 GPG 密钥和 ClickHouse 软件仓库添加到系统中。在本示例中,您将从仓库的 stable(稳定)分支安装 ClickHouse。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list

接下来,通过以下 apt 命令更新并刷新软件包索引。
sudo apt update
您将看到 ClickHouse 软件仓库已添加。

现在通过以下 apt 命令安装作为数据库系统的 ' clickhouse-server ' 软件包以及 ' clickhouse-client ' 客户端软件包。
sudo apt install clickhouse-server clickhouse-client
出现确认提示时,输入 Y 并按回车键继续。

此外,在 ClickHouse 安装过程中,系统会提示您为 ClickHouse 默认用户设置密码。输入 ClickHouse 的新密码,安装完成后您将看到类似下方截图的输出。

ClickHouse 安装完成后,运行以下 systemctl 命令启动并启用 ClickHouse 服务。该命令将启动 ClickHouse,并使服务在系统启动时自动运行。
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server
通过以下命令验证 ClickHouse 服务,确保其正在运行。
sudo systemctl status clickhouse-server
您将看到类似如下的输出 —— ClickHouse 服务当前状态为 running(运行中),且已启用,将在启动时自动运行。

您已完成 ClickHouse 服务器的安装。在下一步中,您将学习如何通过客户端程序访问 ClickHouse 服务器,并为 ClickHouse 管理员用户设置密码身份验证。
通过命令行访问 ClickHouse
ClickHouse 服务器安装完成后,您可以通过已安装的 ' clickhouse-client ' 客户端访问 ClickHouse。
'clickhouse-client' 是一个用于与 ClickHouse 服务器交互和管理的命令行界面。它类似于 MySQL/MariaDB 服务器的 ' mysql ' 客户端、PostgreSQL 服务器的 ' psql ' 客户端,或 MongoDB 服务器的 ' mongod ' 客户端。
要访问 ClickHouse 服务器,可以使用以下 ' clickhouse-client ' 命令。
sudo clickhouse-client --password
出现密码提示时,输入您在安装过程中创建的密码。
登录后,您将看到如下的 ClickHouse 命令行界面。

从这里您可以看到,您已使用默认 ClickHouse 用户连接到了 v22.11 版本的 ClickHouse 服务器。ClickHouse 服务器默认运行在 localhost 的 9000 端口。
至此,您已安装 ClickHouse 服务器和客户端,并学习了如何通过 ' clickhouse-client ' 命令连接到 ClickHouse 服务器。在下一步中,您将为 ClickHouse 服务器设置一个管理员用户。
在 ClickHouse 上设置管理员用户
在本步骤中,您将为 ClickHouse 服务器创建一个管理员用户。在此之前,您需要通过 ClickHouse 配置为 'default' 用户启用 'Account Management'(账户管理)功能。
首先,使用以下 nano 编辑器命令打开配置文件 '/etc/clickhouse-server/users.d/default_password.xml'。
sudo nano /etc/clickhouse-server/users.d/default_password.xml
在 '
<clickhouse> <users> <default> ... <access_management>1</access_management> </default> </users> </clickhouse>
完成后保存文件并退出编辑器。
现在运行以下 systemctl 命令,重启 ClickHouse 服务以使更改生效。
sudo systemctl restart clickhouse-server
既然 'default' 用户的 'access_management' 已启用,接下来您将为 ClickHouse 创建一个新管理员用户。该新用户将能够在 ClickHouse 服务器上访问所有数据库并拥有全部权限。
运行以下 ' clickhouse-client ' 命令,以 'default' 用户身份连接到 ClickHouse 服务器。
sudo clickhouse-client --user default --password
出现密码提示时,输入您先前配置的密码。现在您将进入 ClickHouse 服务器控制台,并以启用了 'access_management' 的 'default' 用户身份登录。

接下来,运行以下查询以创建一个新的 ClickHouse 用户。请务必修改用户名、密码和主机 IP 地址。本示例将创建一个名为 'halsey' 的新用户,密码为 'password',并使用 SHA256 进行哈希。'HOST IP' 选项用于指定连接 ClickHouse 服务器所使用的 IP 地址。在本示例中,仅允许从 localhost 或 '127.0.0.1' 连接。
CREATE USER halsey HOST IP '127.0.0.1' IDENTIFIED WITH sha256_password BY 'password';

现在运行以下查询,将 ClickHouse 服务器上的所有权限授予用户 'halsey'。
GRANT ALL ON *.* TO halsey WITH GRANT OPTION;

接下来,通过以下查询查看 ClickHouse 服务器上的用户列表。您应该会看到新用户 'halsey' 已添加到 ClickHouse。
SHOW USERS;

现在在 ClickHouse 控制台客户端中输入 'quit' 退出。
新数据库管理员用户创建完成后,您需要禁用 ClickHouse 服务器上 'default' 用户的 'access_management' 功能。
使用以下 nano 编辑器命令打开配置文件 ' /etc/clickhouse-server/users.d/default_password.xml '。
sudo nano /etc/clickhouse-server/users.d/default_password.xml
将 'access_management' 选项改为 '0',以禁用 'default' 用户的 'Access Management'(访问管理)功能。
<clickhouse> <users> <default> ... <access_management>0</access_management> </default> </users> </clickhouse>
完成后保存文件并退出编辑器。
通过以下 systemctl 命令重启 ClickHouse 服务以使更改生效。
sudo systemctl restart clickhouse-server
最后,运行以下命令,以用户 'halsey' 身份登录 ClickHouse 服务器。出现密码提示时,输入您的密码并按回车键登录。
sudo clickhouse-client --user halsey --password
登录后,您将看到类似下方截图的输出。ClickHouse 的新管理员用户 'halsey' 已添加,且登录成功。

ClickHouse 服务器的新管理员用户创建完成后,接下来您将学习如何使用 ClickHouse 通过 SQL 查询创建数据库和表,并插入和检索数据。
ClickHouse 数据库系统的基本查询
在本步骤中,您将学习 ClickHouse 数据库系统的基本查询,其语法与常见的 SQL 查询相似。您将学习如何创建数据库和表、向数据库中插入和检索数据,以及 'ALTER' 查询的基础用法——您可以用它来修改 ClickHouse 服务器上的现有数据。
首先,运行以下查询创建一个新数据库。在本示例中,您将创建一个名为 'testdb' 的新数据库。
CREATE DATABASE testdb;

通过以下查询 'USE dbname' 切换到 'testdb' 数据库。
USE testdb;

现在,通过以下查询创建一个名为 'users' 的新表。'users' 表将包含以下字段:
- id,类型为 'UInt64',用于存储整数值。
- name,类型为 'String',用于存储字符串(字符长度)。
- last_login,类型为 'DateTime',用于存储日期时间格式的数据。
- 表引擎此处为 'MergeTree',是 ClickHouse 中最常用的引擎。
CREATE TABLE users (id UInt64, name String, jobs String, last_login DateTime) ENGINE=MergeTree() PRIMARY KEY id ORDER BY id;

接下来,运行以下查询向 'users' 表插入新数据。在下面的查询中,您将向 'users' 表插入三条不同的数据。
INSERT INTO users VALUES (1, 'alice', 'DevOps', '2022-10-10 00:10:10');
INSERT INTO users VALUES (2, 'alex', 'Manager', '2022-09-05 01:19:10');
INSERT INTO users VALUES (3, 'janet', 'Developer', '2022-05-05 04:29:10');
插入第一条数据。

插入第二条数据。

插入第三条数据。

运行以下查询从 'users' 表中检索数据。您应该会看到刚才添加的三条新数据。
SELECT * FROM users;

您已经学习了如何在 ClickHouse OLAP 数据库系统上创建数据库、切换数据库、创建表、插入数据以及检索数据。接下来,您将学习使用 'ALTER' 查询修改数据。
运行以下 'ALTER TABLE' 查询,更新 'users' 表中的现有数据。在本示例中,您将把用户 'alex' 的 'jobs' 字段修改为 'administrator'。
ALTER TABLE users UPDATE jobs = 'Administrator' WHERE name = 'alex';
通过以下查询验证 'users' 表中更新后的数据。您现在应该会看到用户 'alex' 的数据已更新为 'Administrator'。
SELECT * FROM users;

现在您已经学习了 ClickHouse 查询的基础用法——创建和切换数据库、创建表、插入数据以及检索数据。同时,您还学习了如何使用 'ALTER' 查询修改 ClickHouse 数据库中的现有数据。接下来,您将清理您的 ClickHouse 安装。
清理环境
在创建了新的数据库和表并插入随机数据后,在最后这一步中,您将通过删除刚才创建的数据库和表来清理 ClickHouse 数据库系统的安装。
运行以下查询 'DROP TABLE',从 testdb 数据库中删除 users 表。
DROP TABLE users;

现在通过以下 'DROP DATABASE' 查询删除 'testdb' 数据库。
DROP DATABASE testdb;

最后,通过以下查询查看 ClickHouse 服务器上的数据库列表。您应该会看到 'testdb' 数据库已从 ClickHouse 服务器中删除。
SHOW DATABASES;

现在您的 ClickHouse 安装已清理完毕,管理员用户也已配置完成。
总结
恭喜!您已完成 ClickHouse OLAP 数据库系统的安装,并学习了如何在 ClickHouse 上设置管理员用户。最后,您还学习了用于创建数据库和表、插入和检索数据、修改现有数据以及清理数据库和表的基本查询。