跳到主要内容
跳到主要内容

用户与角色设置

users 部分位于 users.xml 配置文件中,包含用户设置。

备注

ClickHouse 还支持 SQL 驱动工作流 来管理用户。我们建议使用它。

users 部分的结构:

user_name/password

密码可以以明文或 SHA256(十六进制格式)指定。

  • 要以明文指派密码(不推荐),请将其放入 password 元素中。

    例如,<password>qwerty</password>。密码可以留空。

  • 要使用其 SHA256 哈希指派密码,请将其放入 password_sha256_hex 元素中。

    例如,<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>

    从 shell 生成密码的示例:

结果的第一行是密码,第二行是相应的 SHA256 哈希。

  • 为了与 MySQL 客户端兼容,密码可以以双 SHA1 哈希指定。将其放入 password_double_sha1_hex 元素中。

    例如,<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>

    从 shell 生成密码的示例:

结果的第一行是密码,第二行是相应的双 SHA1 哈希。

username/ssh-key

此设置允许使用 SSH 密钥进行身份验证。

给定一把 SSH 密钥(由 ssh-keygen 生成),例如

ssh_key 元素的期望格式是

ssh-ed25519 替换为 ssh-rsaecdsa-sha2-nistp256 以支持其他算法。

access_management

此设置启用或禁用对用户使用 SQL 驱动的 访问控制和帐户管理

可能的值:

  • 0 — 禁用。
  • 1 — 启用。

默认值:0。

grants

此设置允许授予某个用户任何权限。 列表中的每个元素应为不指定任何受让人的 GRANT 查询。

示例:

此设置无法与 dictionariesaccess_managementnamed_collection_controlshow_named_collections_secretsallow_databases 设置同时指定。

user_name/networks

允许连接到 ClickHouse 服务器的用户的网络列表。

列表中的每个元素可以具有以下形式之一:

  • <ip> — IP 地址或网络掩码。

    示例:213.180.204.310.0.0.1/810.0.0.1/255.255.255.02a02:6b8::32a02:6b8::3/642a02:6b8::3/ffff:ffff:ffff:ffff::

  • <host> — 主机名。

    示例:example01.host.ru

    为了检查访问,执行 DNS 查询,并将所有返回的 IP 地址与对等地址进行比较。

  • <host_regexp> — 主机名的正则表达式。

    示例:^example\d\d-\d\d-\d\.host\.ru$

    为了检查访问,将对等地址执行 DNS PTR 查询,然后应用指定的正则表达式。接下来,会对 PTR 查询的结果执行另一个 DNS 查询,将所有接收到的地址与对等地址进行比较。我们强烈建议正则表达式以 $ 结尾。

所有 DNS 请求的结果在服务器重启之前会被缓存。

示例

要允许来自任何网络的用户访问,请指定:

备注

除非您拥有正确配置的防火墙,否则从任何网络开放访问是不安全的,或者服务器没有直接连接到互联网。

要仅允许来自本地主机的访问,请指定:

user_name/profile

您可以为用户分配设置配置文件。设置配置文件在 users.xml 文件的单独部分中配置。有关更多信息,请参见 设置配置文件

user_name/quota

配额允许您在一段时间内跟踪或限制资源使用。配额在 users.xml 配置文件的 quotas 部分中配置。

您可以为用户分配一组配额。有关配额配置的详细描述,请参见 配额

user_name/databases

在此部分中,您可以限制 ClickHouse 为当前用户的 SELECT 查询返回的行,从而实现基本的行级安全性。

示例

以下配置强制用户 user1 只能看到 table1id 字段值为 1000 的行,作为 SELECT 查询结果。

filter 可以是任何结果为 UInt8 类型值的表达式。它通常包含比较和逻辑运算符。对于此用户,database_name.table1filter 结果为 0 的行不返回。过滤与 PREWHERE 操作不兼容,并禁用 WHERE→PREWHERE 优化。

角色

您可以使用 user.xml 配置文件的 roles 部分创建任何预定义角色。

roles 部分的结构:

这些角色也可以授予 users 部分中的用户: