Windows通过虚拟机的Ubuntu系统安装、配置、管理、远程访问ClickHouse
1. 安装虚拟机
ClickHouse可以在任何具有x86_64, AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。无法在Windows上运行,所以我推荐首先要在Windows系统安装Linux的虚拟机。MAC OS X的安装与配置我会放在下一篇(或有)写。
我选择的是vmware16 Pro,虚拟机系统Ubuntu20.04.3 LTS,这样系统要求就满足了。
2. 使用Ubuntu的官方预编译deb软件包
以下安装与编译的内容可以直接参考ClickHouse官方文档:ClickHouse Getting Started
2.1 apt-get命令
打开终端Terminal窗口,输入命令
sudo apt-get install apt-transport-https ca-certificates dirmngr
apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。使用apt-get的主流Linux系统包括Debian和Ubuntu变异版本。更多关于apt-get的信息可以参考:apt-get命令
用apt来替换apt-get命令也可以,事实上,我认为应该推荐直接使用apt,二者的区别要从这两个命令的背景和目的说起,简单来讲就是
apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。
但apt并不能完全向下兼容 apt-get 命令,兼容的命令可以参考 Linux中apt与apt-get的区别
那至于是否还可以继续用apt-get呢?目前还没有任何 Linux 发行版官方放出 apt-get 将被停用的消息,至少它还有比 apt 更多、更细化的操作功能。对于低级操作,仍然需要 apt-get。
所以我的建议是对于apt-get install这种apt可以兼容的命令,尽量选择直接使用apt替代apt-get,对于apt无法使用的操作再使用apt-get。
2.2 密钥管理
继续在Terminal输入命令
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
apt-key用于管理Debian Linux系统中的软件包密钥。每个发布的deb包,都是通过密钥认证的,apt-key用来管理密钥。-recv -key可以下载并添加到受信任密钥环中(不做安全检查,有风险)。关于密钥管理与验证测试可以参考 apt-key密钥管理
2.3 将特定地址添加到source.list的列表中并更新apt
继续在Terminal输入命令
echo "deb https://repo.clickhouse.com/deb/stable/main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get udpate
注意这里不是运行deb命令,而是将这行命令添加到地址为source.list.d/clickhouse.list的文件中,tee命令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
第一行运行成功后,会输出deb https://repo.clickhouse.com/deb/stable/main/,并且切换到root用户(sudo -i)后
cd etc/apt/sources.list.d
vim clickhouse.d
你会发现存在一个叫做clickhouse.d的文件,并且打开后第一行就是刚刚写入的命令
然后输入第二行命令,更新apt-get。
2.4 安装clickhouse-server和clickhouse-client
继续在Terminal输入命令
sudo apt-get install -y clickhouse-server clickhouse-client
2.5 启动clickhouse-server服务登录命令行客户端
继续在Terminal输入命令
sudo service clickhouse-server start
clickhouse-client
第一行打开了服务,所以需要加sudo,第二行就可以启动命令行客户端了,启动后你会通过默认的default用户进入安装好的ClickHouse,界面如下:
关于Default用户的初始配置,clickhouse配置文件的修改,访问权限和账户管理,我会在4.访问控制和用户管理写到。
到这里已经就完成了clickhouse在Windows系统上的安装与使用,撒花!!尤其是看到退出clickhouse的命令行客户端的时候,她会说一句Happy new year. 不知道是因为年末临近所以这么说,还是会随着临近节日的不同而更改祝福,anyway有被暖到。
3. ClickHouse提供的接口
ClickHouse提供了两个网络接口
- HTTP,包含文档,易于使用。
- Native TCP,简单,方便使用。
考虑到实际需要,我建议你使用工具库,Yandex官方支持的项目有:
- 命令行客户端
- JDBC驱动
- ODBC驱动
- C++客户端
还有一些广泛的第三方库可以使用:
- 第三方开发库(Python、PHP、Go、Swift、R、Java等)
- 第三方集成库(关系型数据库、消息队列、流处理、对象存储等)
- 可视化UI(Tabix、HouseOps等)
关于接口的说明文档,可以在 客户端接口 中查询。
4. 访问控制和用户管理
初次登陆会默认使用ClickHouse提供的default账号,这个账号有所有的权限,但是不能使用SQL驱动方式的访问权限和账户管理。default主要用于在其他用户还没有设置的情况从客户端登陆或者执行分布式查询。如果已经设置了开发者账户和管理员账户,我不建议继续使用default账户了。default账户的登录信息如下(密码为空):
clickhouse-client --host 127.0.0.1 --user default --port 9000
本段内容参考的官方文档:Access Control and Account Management
官方提供的3个步骤【命令行客户端快速新建用户】
- 为 default 用户开启 SQL驱动方式的访问权限和账户管理;
- 使用 default 用户登录并且创建所需要的所有用户。 不要忘记创建管理员账户 (GRANT ALL ON . WITH GRANT OPTION TO admin_user_account);
- 关闭 default 用户的权限并且禁用SQL驱动方式的访问权限和账户管理;
这里要说明的是,上面第2步从我的测试结果来看是行不通的,我无法通过default用户启用SQL驱动的方式来访问控制和管理账户,只能通过修改配置文件进行账户管理。在目前我还不知道为什么,如果我知道了我会回来更改。
ClickHouse支持使用两种方式配置访问实体:
- 通过sql直接设置,这也是官方推荐的,但是需要至少一个用户帐户启用SQL驱动的访问控制和帐户管理,这需要使用第二种方式设置access_management的值为1(相当于开放SQL驱动方式的访问管理权限)
- 通过配置文件users.xml,默认位置在/etc/clickhouse-server目录下,ClickHouse使用它来定义用户相关的配置项。
下面通过第二种方式,先对用户配置文件详解,再使用它定义新的用户与权限管理。
4.1 用户配置文件users.xml
打开Terminal,切换成root用户的根目录
cd etc/clickhouse-server
clickhouse-server文件夹下存放两个配置文件,config.xml和users.xml, 若想开放远程访问,则需要修改config.xml的配置参数,修改方法可以直接跳至5.ClickHouse远程连接
users.xml存储的是所有用户的配置,主要有三部分组成:profile,users,