当前位置: 首页 > news >正文

TDengine 运维——用户和权限

在这里插入图片描述

简介

TDengine 默认仅配置了一个 root 用户,该用户拥有最高权限。TDengine 支持对系统资源、库、表、视图和主题的访问权限控制。root 用户可以为每个用户针对不同的资源设置不同的访问权限。本节介绍 TDengine 中的用户和权限管理。用户和权限管理是 TDengine Enterprise 特有功能。

用户管理

创建用户

创建用户的操作只能由 root 用户进行,语法如下。

create user user_name pass'password' [sysinfo {1|0}] [createdb {1|0}]

相关参数说明如下。

  • user_name:用户名最长不超过 23 个字节。
  • password:密码长度必须为 8 到 255 个字节。密码至少包含大写字母、小写字母、数字、特殊字符中的三类。特殊字符包括 ! @ # $ % ^ & * ( ) - _ + = [ ] { } : ; > < ? | ~ , .(始自 v3.3.5.0),可以通过在 taos.cfg 中添加参数 enableStrongPassword 0 关闭此强制要求,或者通过如下 SQL 关闭(始自 v3.3.6.0)。
alter all dnodes 'EnableStrongPassword' '0'
  • sysinfo:用户是否可以查看系统信息。1 表示可以查看,0 表示不可以查看。系统信息包括服务端配置信息、服务端各种节点信息,如 dnode、查询节点(qnode)等,以及与存储相关的信息等。默认为可以查看系统信息。
  • createdb:用户是否可以创建数据库。1 表示可以创建,0 表示不可以创建。缺省值为 0。从企业版 v3.3.2.0 开始支持。

如下 SQL 可以创建密码为 abc123!@# 且可以查看系统信息的用户 test。

create user test pass 'abc123!@#' sysinfo 1

查看用户

查看系统中的用户信息可使用如下 SQL。

show users;

也可以通过查询系统表 information_schema.ins_users 获取系统中的用户信息,示例如下。

select * from information_schema.ins_users;

修改用户信息

修改用户信息的 SQL 如下。

alter user user_name alter_user_clause 
alter_user_clause: { pass 'literal' | enable value | sysinfo value| createdb value
}

相关参数说明如下。

  • pass:修改用户密码。
  • enable:是否启用用户。1 表示启用此用户,0 表示禁用此用户。
  • sysinfo:用户是否可查看系统信息。1 表示可以查看系统信息,0 表示不可以查看系统信息
  • createdb:用户是否可创建数据库。1 表示可以创建数据库,0 表示不可以创建数据库。从企业版 v3.3.2.0 开始支持。

如下 SQL 禁用 test 用户。

alter user test enable 0

删除用户

删除用户的 SQL 如下。

drop user user_name

权限管理

仅 root 用户可以管理用户、节点、vnode、qnode、snode 等系统信息,包括查询、新增、删除和修改。

库和表的授权

在 TDengine 中,库和表的权限分为 read 和 write 两种。这些权限可以单独授予,也可以同时授予用户。

  • read 权限:拥有 read 权限的用户仅能查询库或表中的数据,而无法对数据进行修改或删除。这种权限适用于需要访问数据但不需要对数据进行写入操作的场景,如数据分析师、报表生成器等。
  • write 权限:拥有 write 权限的用户可以向库或表中写入数据。这种权限适用于需要对数据进行写入操作的场景,如数据采集器、数据处理器等。如果只拥有 write 权限而没有 read 权限,则只能写入数据但不能查询数据。

对某个用户进行库和表访问授权的语法如下。

grant privileges on resources [with tag_filter] to user_name
privileges: {all,| priv_type [, priv_type] …
}
priv_type:{read| write
}
resources :{dbname.tbname| dbname.*| *.*
}

相关参数说明如下。

  • resources:可以访问的库或表。. 之前为数据库名称,. 之后为表名称。dbname.tbname 的意思是名为 dbname 的数据库中的 tbname 表必须为普通表或超级表。dbname.* 的意思是名为 dbname 的数据库中的所有表。*.* 的意思是所有数据库中的所有表。
  • tag_filter:超级表的过滤条件。

上述 SQL 既可以授权一个库、所有库,也可以授权一个库下的普通表或超级表,还可以通过 dbname.tbnamewith 子句的组合授权符合过滤条件的一张超级表下的所有子表。

如下 SQL 将数据库 power 的 read 权限授权给用户 test。

grant read on power to test

如下 SQL 将数据库 power 下超级表 meters 的全部权限授权给用户 test。

grant all on power.meters to test

如下 SQL 将超级表 meters 离标签值 groupId 等于 1 的子表的 write 权限授权给用户 test。

grant all on power.meters with groupId=1 to test

如果用户被授予了数据库的写权限,那么用户对这个数据库下的所有表都有读和写的权限。但如果一个数据库只有读的权限或甚至读的权限都没有,表的授权会让用户能读或写部分表,详细的授权组合见参考手册。

视图授权

在 TDengine 中,视图(view)的权限分为 read、write 和 alter 3 种。它们决定了用户对视图的访问和操作权限。以下是关于视图权限的具体使用规则。

  • 视图的创建者和 root 用户默认具备所有权限。这意味着视图的创建者和 root 用户可以查询、写入和修改视图。
  • 对其他用户进行授权和回收权限可以通过 grant 和 revoke 语句进行。这些操作只能由 root 用户执行。
  • 视图权限需要单独授权和回收,通过 db.* 进行的授权和回收不包含视图权限。
  • 视图可以嵌套定义和使用,对视图权限的校验也是递归进行的。

为了方便视图的分享和使用,TDengine 引入了视图有效用户(即视图的创建用户)的概念。被授权用户可以使用视图有效用户的库、表及嵌套视图的读写权限。当视图被 replace 后,有效用户也会被更新。

视图操作和权限要求的详细对应关系请见参考手册。

视图授权语法如下。

grant privileges on [db_name.]view_name to user_name
privileges: {all,| priv_type [, priv_type] ...
}
priv_type: {read| writealter
}

在数据库 power 下将视图 view_name 的读权限授权给用户 test,SQL 如下。

grant read on power.view_name to test

在数据库 power 库下将视图 view_name 的全部权限授权给用户 test,SQL 如下。

grant all on power.view_name to test

消息订阅授权

消息订阅是 TDengine 独具匠心的设计。为了保障用户订阅信息的安全性,TDengine 可针对消息订阅进行授权。在使用消息订阅授权功能前,用户需要了解它的如下特殊使用规则。

  • 任意用户在拥有读权限的数据库上都可以创建主题。root 用户具有在任意数据库上创建主题的权限。
  • 每个主题的订阅权限可以独立授权给任何用户,无论其是否具备该数据库的访问权限。
  • 删除主题的操作只有 root 用户或该主题的创建者可以执行。
  • 只有超级用户、主题的创建者或被显式授权订阅权限的用户才能订阅主题。这些权限设置既保障了数据库的安全性,又保证了用户在有限范围内的灵活操作。

消息订阅授权的 SQL 语法如下。

grant privileges on priv_level to user_name 
privileges : { all | priv_type [, priv_type] ...
} 
priv_type : { subscribe
} 
priv_level : { topic_name
}

将名为 topic_name 的主题授权给用户 test,SQL 如下。

grant subscribe on topic_name to test

查看授权

当企业拥有多个数据库用户时,使用如下命令可以查询具体一个用户所拥有的所有授权,SQL 如下。

show user privileges

撤销授权

由于数据库访问、数据订阅和视图的特性不同,针对具体授权的撤销语法也略有差异。下面列出具体的撤销授权对应不同授权对象的语法。
撤销数据库访问授权的 SQL 如下。

revoke privileges on priv_level [with tag_condition] from user_name
privileges : {all| priv_type [, priv_type] ...
}
priv_type : {read| write
}
priv_level : {dbname.tbname| dbname.*| *.*
}

撤销视图授权的 SQL 如下。

revoke privileges on [db_name.]view_name from user_name
privileges: {all,| priv_type [, priv_type] ...
}
priv_type: {read| write| alter
}

撤销数据订阅授权的 SQL 如下。

revoke privileges on priv_level from user_name 
privileges : {all | priv_type [, priv_type] ...
} 
priv_type : { subscribe
} 
priv_level : { topic_name
}

撤销用户 test 对于数据库 power 的所有授权的 SQL 如下。

revoke all on power from test

撤销用户 test 对于数据库 power 的视图 view_name 的读授权的 SQL 如下。

revoke read on power.view_name from test

撤销用户 test 对于消息订阅 topic_name 的 subscribe 授权的 SQL 如下。

revoke subscribe on topic_name from test

访问官网

更多内容欢迎访问 TDengine 官网

http://www.xdnf.cn/news/691021.html

相关文章:

  • Agent 的7 中设计模式
  • 4.Consul服务注册与发现
  • 【深度学习】10. 深度推理(含链式法则详解)RNN, LSTM, GRU,VQA
  • 33.第二阶段x64游戏实战-InLineHook
  • Jmeter——JDBC连接数据库相关
  • 【vscode】切换英文字母大小写快捷键如何配置
  • 《Google I/O 2025:AI浪潮下的科技革新风暴》
  • 宁夏农业科技:创新引领,赋能现代农业新篇章
  • c语言实现Linux命令行补全机制
  • 运用集合知识做斗地主案例
  • 智能指针的使用及原理
  • MCP 登场:掘金开启 AI 前端项目部署新时代
  • 第三章、数据链路层
  • C++智能指针用法及内存管理
  • 双因子COX 交互 共线性 -spss
  • 多态 向上转型
  • YOLO人体姿态估计Pytorch推理ONNX模型推理
  • Android-GestureDetector学习总结
  • 微信小程序(uniapp)对接腾讯云IM
  • Vue 实例生命周期
  • 2025.5.28总结
  • 接口幂等性原理与方案总结
  • Avue表单个别字段实现全选的思路
  • 【Pandas】pandas DataFrame drop
  • Transformer核心技术解析LCPO方法:精准控制推理长度的新突破
  • Redis学习(十四)主从复制的工作原理、集群搭建(一主二从)
  • Android 云手机横屏模式下真机键盘遮挡输入框问题处理
  • [AD] Noxious LLMNR+DHCP+NTLMv2+Kerberos+SMB
  • 高精度导航 | RTK:2025年高精度导航算法综述,包括:原理,数据,公式,完整代码,开源代码链接
  • 网络协议之办公室网络是怎样的?