You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ClickHouse中GRANT与SET两种角色分配方式的区别是什么?

ClickHouse 角色分配操作GRANT与SET ROLE的差异

二者的核心定位完全不同,具体区别如下:

  • 权限逻辑不同
    GRANT <角色> TO <用户>是权限授予操作,作用是给用户开放对应角色的持有资格,相当于给了用户使用该角色的「入场券」,操作持久化存储在元数据中,实例重启不会失效。执行该操作后,用户只是获得了激活该角色的权限,角色关联的权限不会自动生效。
    SET ROLE <角色> TO <用户>是角色激活/设置操作,作用是将用户已经持有的角色设置为生效状态,本身不具备权限授予能力,如果用户没有提前通过GRANT拿到对应角色的持有权,执行该操作会直接抛出权限错误。
  • 生效规则不同
    默认不带参数的SET ROLE操作是持久化配置,相当于给用户设置默认角色,用户后续每次登录都会自动激活该角色,权限直接生效;如果添加ON SESSION参数,SET ROLE只会在当前会话临时生效,会话断开后就会恢复原有的角色状态。

典型使用场景示例

需求:给用户user1开通管理员角色权限,且要求用户登录后自动生效
执行步骤:

  1. 首先授予角色持有资格:GRANT admin TO user1;
  2. 再设置默认激活该角色:SET ROLE admin TO user1;
    如果仅执行第一步,user1登录后需要手动执行SET ROLE admin;才能获得管理员权限;如果跳过第一步直接执行第二步,会触发权限报错。

内容的提问来源于stack exchange,提问作者Jaewook Choi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:39:02