首页/数据/NoSQL 速查/SQL 化用户与权限管理
ClickHouse56 条

SQL 化用户与权限管理

启用 SQL 访问控制后可以像常规数据库一样管理账号:CREATE USER、GRANT 权限、CREATE ROLE 与 QUOTA;账号信息默认存放在 access_control_path 下的本地文件。

NoSQL 速查数据更新于 2026-10-13

SQL 化权限管理是什么

启用 SQL 访问控制后,可以像常规数据库那样管理账号:CREATE USER 建账号、GRANT 授权、CREATE ROLE 组织权限、CREATE QUOTA 限制资源,账号信息默认存放在 access_control_path 指向的本地文件中。授权支持库级、表级甚至列级,配额可以限制单用户的查询资源用量。排查权限来源时要留意 users.xml 里的账号与 SQL 化账号可能并存,SHOW GRANTS、system.users 与 system.grants 是最直接的核对手段。

基本信息

建用户CREATE USER app IDENTIFIED WITH sha256_password BY '…'
授权GRANT SELECT ON analytics.* TO app,也支持列级授权
角色与配额CREATE ROLE / GROUP、CREATE QUOTA
查看SHOW USERS / SHOW GRANTS / system.users / system.grants
存储位置access_control_path 下的本地文件
所属系统ClickHouse(SQL 访问控制)

典型使用场景

  • 只读账号:给数据平台或 BI 工具开只读权限
  • 最小权限:按库表甚至列授权,限制敏感字段的访问
  • 角色管理:把常用权限组合成角色后批量授予
  • 资源限制:用 QUOTA 约束单用户的查询资源用量
  • 权限审计:用 system.grants 导出各账号的授权清单

建号与授权

建号与授权
CREATE USER app_user IDENTIFIED WITH sha256_password BY 'S3cret';  -- 建账号

GRANT SELECT ON analytics.* TO app_user;                           -- 库级只读

SHOW GRANTS FOR app_user;                                          -- 核对已授权限

SELECT name, storage, auth_type FROM system.users;                 -- 账号来源与认证方式

语句读法

语句作用注意
CREATE USER建账号认证方式与密码策略按版本选择
GRANT授权支持库级、表级与列级
CREATE ROLE建角色便于批量授予同一组权限
CREATE QUOTA配额限制单用户资源用量
SHOW GRANTS查看授权排查权限来源最快的手段
只读账号是数据平台最常见的需求:授权范围尽量收到库表与列级,再配合 QUOTA 限制查询资源,避免分析查询影响在线业务。
users.xml 中定义的账号与 SQL 化账号并存时,排查要两边都看,否则容易误判权限来源,出现「改了授权却不生效」的情况。
默认用户 default 若保留空密码且可直连,生产环境要为它设置密码或限制来源地址,外部扫描最先尝试的就是这类账号。
权限变更后用 SHOW GRANTS FOR 与 system.grants 双向核对,并定期导出授权清单做审计,比事故发生后逐个追查快得多。

易错点

  • users.xml 里定义的账号与 SQL 化账号并存时排查要两边都看,避免误判权限来源
  • 默认用户 default 若保留空密码可被直连,生产环境要为它设置密码或限制来源
  • 授权范围写得过宽(例如整库读写)会让事故影响面放大,应按最小权限授予
  • 改完授权后应用侧没有重建连接,旧连接上的权限不会立刻更新

数据来源与参考

  • ClickHouse Docs: Access control and account management
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌