跳到主要内容

如何删除默认用户?

·2 分钟阅读
了解如何在运行 ClickHouse 服务器时删除默认用户。

删除默认用户

在本指南中,我们将学习如何从 ClickHouse 服务器中删除 default 用户。

我们可以通过创建一个 YAML 文件(我们称之为 remove_default_user.yaml)来实现这一点,该文件具有以下内容

users:
default:
"@remove": remove

此文件的位置取决于我们安装 ClickHouse 的方式。

直接运行可执行文件

如果我们直接运行 ClickHouse(`clickhouse server`),我们需要将文件放在 `config.d` 目录下。

当我们运行 ClickHouse 服务器时

clickhouse server

我们将在日志中看到以下行

{} <Debug> ConfigProcessor: Merging configuration file 'config.d/remove_default_user.yaml'.

并且我们将无法使用 clickhouse client 连接

ClickHouse client version 24.11.1.2557 (official build).
Connecting to localhost:9000 as user default.
Password for user (default):
Connecting to localhost:9000 as user default.
Code: 516. DB::Exception: Received from localhost:9000. DB::Exception: default: Authentication failed: password is incorrect, or there is no user with such name.

Docker 或已安装

如果我们通过 Docker 运行 ClickHouse,或者将其安装在我们的机器上,我们需要将文件放在 `/etc/clickhouse-server/users.d` 目录下。

因此,如果我们使用 Docker 运行,我们可以将我们之前创建的 `config.d` 目录挂载到 `/etc/clickhouse-server/users.d`

docker run \
-v ./config.d:/etc/clickhouse-server/users.d \
-p 8123:8123 -p9000:9000 \
clickhouse/clickhouse-server:24.12
Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'.
Logging trace to /var/log/clickhouse-server/clickhouse-server.log
Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log

然后我们可以搜索服务器日志以检查它是否被拾取

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Command}}"
CONTAINER ID   IMAGE                                NAMES               COMMAND
383e8ed89431 clickhouse/clickhouse-server:24.12 trusting_rosalind "/entrypoint.sh"
docker exec -it trusting_rosalind grep "users\.d" /var/log/clickhouse-server/clickhouse-server.log

我们应该看到以下行

{} <Debug> ConfigProcessor: Merging configuration file '/etc/clickhouse-server/users.d/remove_default_user.yaml'.