如何为Clickhouse设置管理员账户?

14

我在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 *.*.
3个回答

13

要解决这个问题,需要在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> -->
..

谢谢,这个很有效!!将其设置为 .env 文件将非常好。我在下面添加了几个步骤来在我的开发机上创建管理员用户:CREATE USER 'foo' IDENTIFIED WITH plaintext_password BY 'bar' SET allow_introspection_functions=1 GRANT ALL ON . TO 'foo' WITH GRANT OPTION - frosty

5
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

0
如果您正在通过Docker Hub上的镜像运行clickhouse-server,最简单的方法是通过环境变量传递登录信息。

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

有时候您可能希望在容器启动时创建一个用户(默认情况下使用名为default的用户)和数据库。您可以使用环境变量CLICKHOUSE_DB、CLICKHOUSE_USER、CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT和CLICKHOUSE_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会给你一个默认的用户,该用户可以做任何事情...除了SQL驱动的访问控制和账户管理。这就是`CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1`所允许的。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接