如何为Clickhouse设置管理员帐户



我正在Windows主机上的docker容器中运行Clickhouse。我试图创建一个帐户,使其成为管理员帐户。看起来默认用户没有创建其他帐户的权限。我如何绕过这个错误并创建一个管理员帐户?

docker-compose exec -T dash-clickhouse clickhouse-client --query="CREATE USER 'foo' IDENTIFIED WITH sha256_password BY 'bar'"

给出错误

Received exception from server (version 20.7.2):
Code: 497. DB::Exception: Received from localhost:9000. DB::Exception: default: Not enough privileges. To execute this query it's necessary to have the grant CREATE USER ON *.*.

要修复它,需要在users.xml文件中启用access_management设置:

#  execute an interactive bash shell on the container
docker-compose exec {container_name} bash
# docker exec -it {container_name} bash
# install preferable text editor (i prefer using 'nano')
apt-get update
apt-get install nano
# open file users.xml in the editor
nano /etc/clickhouse-server/users.xml

取消注释default用户的access_management设置并保存更改:

..
<!-- User can create other users and grant rights to them. -->
<!-- <access_management>1</access_management> -->
..
mkdir -p  ~/Documents/docker/click/etc/conf.d
cat ~/Documents/docker/click/etc/conf.d/zxylalalhuayk.xml
<?xml version="1.0" ?>
<yandex>
<users>
<default>
<access_management>1</access_management>
</default>
</users>
</yandex>

docker run -d --name test  -v ~/Documents/docker/click/etc/conf.d/:/etc/clickhouse-server/conf.d --ulimit nofile=262144:262144  -p 8123:8123 yandex/clickhouse-server

如果您通过docker hub中的映像运行clickhouse服务器,最简单的方法是通过环境变量传入登录信息

如何在启动时创建默认数据库和用户

有时,您可能希望在容器启动时创建一个用户(默认情况下使用名为default的用户(和数据库。可以使用环境变量CLICKHOUSE_DBCLICKHOUSE_USERCLICKHOUSE_DEFAULT_ACCESS_MANAGEMENTCLICKHOUSE_PASSWORD:

docker run --rm -e CLICKHOUSE_DB=my_database -e CLICKHOUSE_USER=username -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=password -p 9000:9000/tcp clickhouse/clickhouse-server

如果你不考虑这些,clickhouse会给你一个default用户,它可以做任何事情。。。除了SQL驱动的访问控制和帐户管理。这就是CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1所允许的。

https://hub.docker.com/r/clickhouse/clickhouse-server/

最新更新