如何将 users.xml 从只读状态更改为只读状态?

How to change users.xml from being readonly?

我已经使用 docker-compose 设置了 ClickHouse 服务器的工作实例。现在我正在尝试向 users.xml 中定义的用户授予特权(写权限):

<users>
        <deep>
            <access_management>1</access_management>
            <password>xxx</password>
            <networks incl="networks" replace="replace">
                <ip>::/1</ip>
                <ip>192.168.65.155</ip>
            </networks>
            <profile>default</profile>
            <quota>default</quota>
        </deep>
</users>

我正在使用这个命令

GRANT INSERT ON registry.simple_people TO deep

这给了我这个错误信息:

Code: 495, e.displayText() = DB::Exception: Cannot update user `deep` in users.xml because this storage is readonly: Couldn't update user `deep`. Successfully updated: none (version 20.12.3.3 (official build))

我已经阅读了来自 ch here https://clickhouse.tech/docs/en/sql-reference/statements/grant/ 的文档,而且我已经将只读选项设置为 2 和 0,输出没有任何差异。 你们中的任何人都可以看到我可能遗漏了什么或者我应该做什么才能使 users.xml 成为“非只读”吗?

注:

用户'deep'可以从数据库读取。

我在 WSL:Ubuntu-20.04

很可能您正在使用 HTTP GET 而不是 POST.

执行插入

https://clickhouse.tech/docs/en/interfaces/http/#http-interface

使用 GET 方法时,设置为“只读”。也就是说,对于修改数据的查询,只能使用POST方式。您可以在 POST 正文或 URL 参数中发送查询本身。



有两种管理用户的方法。

旧 XML 方式和新方式 create/grant/RBAC。

XML 个创建的用户无法被授予。它们使用 XML 设置进行管理。

默认情况下 XML 用户可以完全访问所有内容。

您可以使用 XML + 配置文件设置只读并将此配置文件设置为 XML 用户。

    <profiles>
        <roprofile>
            <readonly>1</readonly>