ClickHouse权限控制

一、为default用户设置密码

        在服务器任意路径下执行如下命令,获取密码加密密文

        echo -n 123456 | openssl dgst -sha256

        sudo vi /etc/clickhouse-server/users.xml

        1、取消<access_management>1</access_management>注释

        2、设置密码:

        密文:<password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>

        明文:

        <password></password>

        esc        退出编辑

        :wq!        强制保存

        注:实时生效

二、创建新的用户

        登录数据库

        clickhouse-client --password

        123456        输入第一步设置的密码

        创建用户名为it的账号,并设置密码为123456

        create user it identified with sha256_password by '123456' host any;

        查询用户

        select * from system.users FORMAT Vertical;

三、创建新的角色

        创建it角色

        create role it;

        查看所有角色

        show roles;

四、赋权给角色

        赋所有权限给it角色

        grant all on *.* to it;

        赋查看、查询system库所有表的权限给it角色

        grant show, select on system.* to it;

        赋查看、查询system库users表name字段的权限给it角色

        grant show, select(name) on system.users to it;

        注:grant 权限(字段1,字段2) on 数据库.表 to 角色;

        show grants for 角色名/用户名

        查看default用户的权限

        show grants for default;

        查看it角色的权限

        show grants for it;

五、赋角色给用户

        将it角色和it用户绑定

        grant it to it;

        grant 角色名称 to 用户名称

六、资源

        查看ClickHouse的所有grant权限
        https://clickhouse.com/docs/zh/sql-reference/statements/grant#grant-privileges

        本地用户资源存放路径,也就是通过以上方式创建的新用户

        /var/lib/clickhouse/access/

        /var/lib/clickhouse 是数据存储路径

### 如何在 ClickHouse 中授予用户权限 #### 创建新用户并授予权限 为了向特定用户授予权限,在 ClickHouse 中可以使用 `CREATE USER` 和 `GRANT` 命令组合。对于版本低于 22.8.5.29 的情况,不支持使用 `WITH REPLACE OPTION` 来修改已有用户的权限。 创建一个新的用户可以通过下面的 SQL 语句完成: ```sql CREATE USER IF NOT EXISTS new_user_name ON CLUSTER default_cluster IDENTIFIED WITH plaintext_password BY 'your_password'; ``` 此命令会在指定集群上创建一个名为 `new_user_name` 的用户,并设置密码为 `'your_password'`[^4]。 #### 授予读写权限给用户 一旦用户被成功创建,则可以根据需求分配不同的访问级别。如果希望给予该用户对某个数据库或表具有完全控制权(即允许执行 SELECT, INSERT 等操作),则可采用如下方式: ```sql GRANT ALL PRIVILEGES ON your_database.* TO new_user_name; ``` 这会赋予 `new_user_name` 用户针对 `your_database` 数据库内所有对象的最大化权限[^1]。 #### 只授予只读权限 有时仅需让用户能够查询数据而无其他更改能力,这时应该限制为其提供有限度的访问许可。通过设定 `<readonly>` 参数值为 `2` ,可以在保持基本读取功能的同时还允许调整某些参数配置: ```sql ALTER USER new_user_name SETTINGS readonly=2; ``` 上述指令使得 `new_user_name` 账户处于只读模式下工作,但保留了部分额外的功能如改变 session 设置的权利[^2]。 #### 验证权限生效 最后一步是验证所设权限是否正常运作。尝试以刚建立好的用户名及对应密码连接到服务器端口,并试着运行一些简单的 DDL/DML 操作来检验实际效果。例如,使用 clickhouse-client 工具登录后测试能否创建新的数据库或表格结构: ```bash clickhouse-h 127.0.0.1 --password='your_password' ``` 如果一切顺利的话,根据之前定义的不同层次级别的授权范围,将会看到相应的反馈信息提示哪些动作是可以被执行成功的,哪些会被拒绝掉[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值