1. 创建临时容器,拿出里面的配置文件

    # 下载镜像以及创建临时容器
    sudo docker run --rm -d --name=clickhouse-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9009:9009 -p 9000:9000 yandex/clickhouse-server:latest
    # 拿出里面的配置文件 config.xml users.xml
    docker cp clickhouse-server:/etc/clickhouse-server/config.xml C:\Users\sailing\Documents\software\clickhouse\conf\config.xml
    docker cp clickhouse-server:/etc/clickhouse-server/users.xml C:\Users\sailing\Documents\software\clickhouse\conf\users.xml
    # 停止临时容器
    docker stop clickhouse-server
    
  2. 修改配置文件

    准备数据库用户密码

    PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
    # 得到第一个用户密码
    Qnh59bDt
    d8877c0bc153662d93b51ef4df0274f541c5c63e4d76e19b7a803ded2206ec56
    
    PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
    # 得到第二个用户密码
    HE5ZhQzN
    2b9847a742812b8317012d5df11f2a79d823afbed2789dd5c72d1067e44c6b53
    

    想使用简单密码如 123456,经过 sha256 后如下:
    8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

    修改 users.xml 文件

    • 把default账号设为只读权限,并设置密码 yandex-->users-->default-->profile 节点设为 readonly

    • 注释掉 yandex-->users-->default-->password 节点

    • 新增 yandex-->users-->default-->password_sha256_hex 节点,填入生成的密码

    • 新增root账号

    <users>
    	<!-- If user name was not specified, 'default' user is used. -->
    	<default>
    		<!-- <password></password> -->
    		<password_sha256_hex>d8877c0bc153662d93b51ef4df0274f541c5c63e4d76e19b7a803ded2206ec56</password_sha256_hex>
    		<networks>
    			<ip>::/0</ip>
    		</networks>
    
    		<!-- Settings profile for user. -->
    		<profile>readonly</profile>
    
    		<!-- Quota for user. -->
    		<quota>default</quota>
    
    		<!-- User can create other users and grant rights to them. -->
    		<!-- <access_management>1</access_management> -->
    	</default>
    	<root>
    		<password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
    		<networks incl="networks" replace="replace">
    			<ip>::/0</ip>
    		</networks>
    		<profile>default</profile>
    		<quota>default</quota>
    	</root>
    </users>
    
  3. 创建正式的容器

# 删除临时容器
docker rm clickhouse-server
# 启动正式容器
# windows
docker run -d --name=clickhouse-server -p 8123:8123 -p 9009:9009 -p 9000:9000 --ulimit nofile=262144:262144 -v C:\Users\sailing\Documents\software\clickhouse\data:/var/lib/clickhouse:rw -v C:\Users\sailing\Documents\software\clickhouse\conf\config.xml:/etc/clickhouse-server/config.xml -v C:\Users\sailing\Documents\software\clickhouse\conf\users.xml:/etc/clickhouse-server/users.xml -v C:\Users\sailing\Documents\software\clickhouse\log:/var/log/clickhouse-server:rw yandex/clickhouse-server:latest
# linux
sudo docker run -d --name=clickhouse-server -p 8123:8123 -p 9009:9009 -p 9000:9000 --ulimit nofile=262144:262144 -v /app/cloud/clickhouse/data:/var/lib/clickhouse:rw -v /app/cloud/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml -v /app/cloud/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml -v /app/cloud/clickhouse/log:/var/log/clickhouse-server:rw yandex/clickhouse-server:latest