# 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

# 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

# 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

# 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

# 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

到这里就安装成功了,可以用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

更多的使用可以查看 smi2/phpclickhouse (opens new window),或者 github地址 (opens new window)

# 参考资料