# 1.clickhouse-server镜像
docker pull yandex/clickhouse-server
1
# 2. 启动临时容器
目的:拷贝容器内配置文件
docker run -d --rm --name=temp yandex/clickhouse-server
# -d 后台运行
# --rm 启动临时容器,当容器停掉后,容器自动删除
# --name 容器名称
1
2
3
4
2
3
4
# 3.创建配置文件、数据、日志
sudo mkdir -p /usr/local/clickhouse/conf /usr/local/clickhouse/data /usr/local/clickhouse/log
1
# 4. 配置文件拷贝到宿主机
docker cp temp:/etc/clickhouse-server/users.xml /usr/local/clickhouse/conf/users.xml
docker cp temp:/etc/clickhouse-server/config.xml /usr/local/clickhouse/conf/config.xml
1
2
2
# 5. 修改连接用户名、密码(users.xml)
# 5.1 执行命令,生成SHA256密码
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
1
# 5.2 返回结果
XwCoKBgV #密码明文
2c297a5ee6d922c0472dee50d3067ea1ce99dd54e765247e287f9ca262525a63 #密文
1
2
2
# 5.3.修改users.xml配置文件
<users>
<root> <password_sha256_hex>2c297a5ee6d922c0472dee50d3067ea1ce99dd54e765247e287f9ca262525a63</password_sha256_hex>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</root>
</users>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 6.启动容器
docker run -d --name clickhouse-server \
-p 8123:8123 \
-p 9009:9009 \
-p 9090:9000 \
--ulimit nofile=262144:262144 \
--volume=/usr/local/clickhouse/data:/var/lib/clickhouse \
--volume=/usr/local/clickhouse/log:/var/log/clickhouse-server \
--volume=/usr/local/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
--volume=/usr/local/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \ yandex/clickhouse-server
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
到这里就安装成功了,可以用dbeaver连接使用了
# 7.php包简单使用
composer require smi2/phpclickhouse
1
<?php
// 配置
$config = [
'host' => '10.7.11.52',
'port' => '8123',
'username' => 'default',
'password' => 'tCWZO11l'
];
// 连接
$db = new Client($config);
$db->database('tutorial');
$db->setTimeout(15); // 10 seconds
$db->setConnectTimeOut(5); // 5 seconds
// 查看表结构
$result = $db->showTables();
// 写入
// $result = $db->insert('tt5',
// [
// [1, 2, 5, 2, 1],
// ],
// ['id', 'id2', 'id3', 'v1', 'v2']
// );
// 查询
$result = $db->select('SELECT * FROM tt5 order by id');
//$result2 = $db->select('SELECT * FROM tt5 order by id');
var_dump($result->rows());
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
更多的使用可以查看 smi2/phpclickhouse (opens new window),或者 github地址 (opens new window)