用户管理
用户管理语法在所有版本中可用,但在 TDengine 社区版中仅基础功能实际可用。
创建用户
CREATE USER user_name PASS 'password'
[SYSINFO {1|0}]
[CREATEDB {1|0}]
[ENABLE {1|0}]
[CHANGEPASS {2|1|0}]
[SESSION_PER_USER {value | DEFAULT | UNLIMITED}]
[CONNECT_TIME {value | DEFAULT | UNLIMITED}]
[CONNECT_IDLE_TIME {value | DEFAULT | UNLIMITED}]
[CALL_PER_SESSION {value | DEFAULT | UNLIMITED}]
[VNODE_PER_CALL {value | DEFAULT | UNLIMITED}]
[FAILED_LOGIN_ATTEMPTS {value | DEFAULT | UNLIMITED}]
[PASSWORD_LOCK_TIME {value | DEFAULT | UNLIMITED}]
[PASSWORD_LIFE_TIME {value | DEFAULT | UNLIMITED}]
[PASSWORD_GRACE_TIME {value | DEFAULT | UNLIMITED}]
[PASSWORD_REUSE_TIME {value | DEFAULT}]
[PASSWORD_REUSE_MAX {value | DEFAULT}]
[INACTIVE_ACCOUNT_TIME {value | DEFAULT | UNLIMITED}]
[ALLOW_TOKEN_NUM {value | DEFAULT | UNLIMITED}]
[HOST {ip | ip range} [, {ip | ip range}] ...]
[NOT_ALLOW_HOST {ip | ip range} [, {ip | ip range}] ...]
[ALLOW_DATETIME {time range} [, {time range}] ...]
[NOT_ALLOW_DATETIME {time range} [, {time range}] ...]
用户名最长不超过 23 个字节。
密码长度必须为 8 到 255,且至少包含大写字母、小写字母、数字、特殊字符中的三类。特殊字符包括 ! @ # $ % ^ & * ( ) - _ + = [ ] { } : ; > < ? | ~ , .。可在 taos.cfg 中设置 enableStrongPassword 0 关闭此强制要求,或通过如下 SQL 关闭:
ALTER ALL DNODES 'EnableStrongPassword' '0';
FAILED_LOGIN_ATTEMPTS 等选项的默认值与配置参数 enableAdvancedSecurity 相关,见下文。可通过如下 SQL 设置其状态:
-- 默认关闭高级安全功能
ALTER ALL DNODES 'EnableAdvancedSecurity' '0';
-- 默认打开高级安全功能
ALTER ALL DNODES 'EnableAdvancedSecurity' '1';
SYSINFO:该用户是否可查看系统信息。1表示可以,0表示无权。系统信息包括服务配置、dnode、vnode、存储等。缺省值为1。ENABLE:是否启用该用户。1表示启用,0表示未启用;未启用的用户不能登录。缺省值为1。CREATEDB:是否可创建数据库。1表示可以,0表示无权。缺省值为0。企业版自v3.3.2.0起支持。CHANGEPASS:用户是否能够或必须修改密码。2表示可以修改,1表示必须修改,0表示不能修改。缺省值为2。企业版自v3.4.0.0起支持。SESSION_PER_USER:限制用户同时建立的数据库连接数量。enableAdvancedSecurity打开时默认32,否则默认-1(UNLIMITED)。最小1;设为-1或UNLIMITED则不限制。企业版自v3.4.0.0起支持。CONNECT_TIME:单次会话最大持续时间,单位为分钟。enableAdvancedSecurity打开时默认480,否则默认-1(UNLIMITED)。最小1;设为-1或UNLIMITED则不限制。企业版自v3.4.0.0起支持。CONNECT_IDLE_TIME:允许的会话最大空闲时间,单位为分钟。enableAdvancedSecurity打开时默认30,否则默认-1(UNLIMITED)。最小1;设为-1或UNLIMITED则不限制。企业版自v3.4.0.0起支持。CALL_PER_SESSION:单会话最大并发子调用数量。enableAdvancedSecurity打开时默认128,否则默认-1(UNLIMITED)。最小1;设为-1或UNLIMITED则不限制。企业版自v3.4.0.0起支持。VNODE_PER_CALL:单次调用可涉及的最大 vnode 数量。默认-1(无限制)。企业版自v3.4.0.0起支持。FAILED_LOGIN_ATTEMPTS:允许的连续失败登录次数,超过后账户将被锁定。enableAdvancedSecurity打开时默认3,否则默认UNLIMITED。最小1;设为UNLIMITED则不限制。企业版自v3.4.0.0起支持。PASSWORD_LOCK_TIME:因登录失败被锁定后的解锁等待时间,单位为分钟。enableAdvancedSecurity打开时默认1440,否则默认1。最小1;设为UNLIMITED则永久锁定。企业版自v3.4.0.0起支持。PASSWORD_LIFE_TIME:密码有效期,单位为天。enableAdvancedSecurity打开时默认90,否则默认UNLIMITED。最小1;设为UNLIMITED则永不过期。企业版自v3.4.0.0起支持。PASSWORD_GRACE_TIME:密码过期后的宽限期(单位天)。宽限期内禁止执行除修改密码以外的操作;宽限期内未改密则锁定账户。enableAdvancedSecurity打开时默认7,否则默认UNLIMITED。最小0;设为UNLIMITED则永不因宽限期锁定。企业版自v3.4.0.0起支持。PASSWORD_REUSE_TIME:密码重用时间,旧密码失效后不能在此期限内重复使用,单位为天。enableAdvancedSecurity打开时默认30,否则默认0。最小0,最大365。新密码需同时满足PASSWORD_REUSE_TIME与PASSWORD_REUSE_MAX。企业版自v3.4.0.0起支持。PASSWORD_REUSE_MAX:密码历史记录次数,需经过多少次更改后才能重复使用旧密码。enableAdvancedSecurity打开时默认5,否则默认0。最小0,最大100。新密码需同时满足PASSWORD_REUSE_TIME与PASSWORD_REUSE_MAX。企业版自v3.4.0.0起支持。INACTIVE_ACCOUNT_TIME:账户不活动锁定时间,长期未使用的账户自动锁定,单位为天。enableAdvancedSecurity打开时默认90,否则默认UNLIMITED。最小1;设为UNLIMITED则永不锁定。企业版自v3.4.0.0起支持。ALLOW_TOKEN_NUM:支持的令牌个数。默认3,最小0;设为UNLIMITED则不限制。企业版自v3.4.0.0起支持。HOST/NOT_ALLOW_HOST:IP 地址白名单与黑名单。可为单个 IP(如192.168.1.1),或 CIDR 地址段(如192.168.1.1/24)。企业版自v3.4.0.0起支持。- 需将系统配置
enableWhiteList设为1,黑白名单才会生效。 - 若既未设置
HOST也未设置NOT_ALLOW_HOST,则允许用户在任何地址登录。注意:为保证安全和便于使用,创建用户时若设置了HOST,或两者均未设置,系统会自动将127.0.0.1和::1加入HOST。因此上述“任何地址”情形,需通过ALTER USER删除全部HOST与NOT_ALLOW_HOST后才会出现。 - 若只设置
HOST,则仅允许从该地址或地址段登录。 - 若只设置
NOT_ALLOW_HOST,则不允许从该地址或地址段登录,其它地址允许。 - 若同时设置二者,则只能从属于
HOST且不属于NOT_ALLOW_HOST的地址登录。
- 需将系统配置
ALLOW_DATETIME/NOT_ALLOW_DATETIME:允许与不允许登录的时间范围(以服务端时区为准),包含日期、起始时间(精确到分钟)、时长(分钟)三部分。日期可为具体日期,或MON、TUE、WED、THU、FRI、SAT、SUN;例如2025-12-25 08:00 120、TUE 08:00 120。企业版自v3.4.0.0起支持。- 若两者均未设置,允许在任何时间登录。
- 若只设置
ALLOW_DATETIME,仅该时间段允许登录。 - 若只设置
NOT_ALLOW_DATETIME,该时间段不允许登录,其它时间允许。 - 若同时设置,则只能在属于
ALLOW_DATETIME且不属于NOT_ALLOW_DATETIME的时间段内登录。
以下示例创建一个密码为 abc123!@#、可查看系统信息的用户:
taos> CREATE USER test PASS 'abc123!@#' SYSINFO 1;
Query OK, 0 of 0 rows affected (0.001254s)
查看用户
SHOW USERS;
示例
taos> SHOW USERS;
name | super | enable | sysinfo | createdb | create_time | totp | allowed_host | allowed_datetime |
===========================================================================================================================
test | 0 | 1 | 1 | 0 | 2025-12-24 18:56:20.709 | 0 | +127.0.0.1/32, +::1/128 | +ALL |
root | 1 | 1 | 1 | 1 | 2025-12-24 18:00:43.197 | 0 | +127.0.0.1/32, +::1/128 | +ALL |
Query OK, 2 rows in set (0.001657s)
在 allowed_host 中,地址或地址段前缀为 + 表示白名单(允许登录),前缀为 - 表示黑名单(不允许登录)。allowed_datetime 同理。
也可查询内置系统表 information_schema.ins_users:
taos> SELECT * FROM information_schema.ins_users;
name | super | enable | sysinfo | createdb | create_time | totp | allowed_host | allowed_datetime |
===========================================================================================================================
test | 0 | 1 | 1 | 0 | 2025-12-24 18:56:20.709 | 0 | +127.0.0.1/32, +::1/128 | +ALL |
root | 1 | 1 | 1 | 1 | 2025-12-24 18:00:43.197 | 0 | +127.0.0.1/32, +::1/128 | +ALL |
Query OK, 2 row(s) in set (0.007383s)
删除用户
DROP USER [IF EXISTS] user_name;
修改用户配置
ALTER USER user_name alter_user_clause
alter_user_clause: {
[PASS 'password']
[SYSINFO {1|0}]
[CREATEDB {1|0}]
[ENABLE {1|0}]
[CHANGEPASS {2|1|0}]
[SESSION_PER_USER {value | DEFAULT | UNLIMITED}]
[CONNECT_TIME {value | DEFAULT | UNLIMITED}]
[CONNECT_IDLE_TIME {value | DEFAULT | UNLIMITED}]
[CALL_PER_SESSION {value | DEFAULT | UNLIMITED}]
[VNODE_PER_CALL {value | DEFAULT | UNLIMITED}]
[FAILED_LOGIN_ATTEMPTS {value | DEFAULT | UNLIMITED}]
[PASSWORD_LOCK_TIME {value | DEFAULT | UNLIMITED}]
[PASSWORD_LIFE_TIME {value | DEFAULT | UNLIMITED}]
[PASSWORD_GRACE_TIME {value | DEFAULT | UNLIMITED}]
[PASSWORD_REUSE_TIME {value | DEFAULT}]
[PASSWORD_REUSE_MAX {value | DEFAULT}]
[INACTIVE_ACCOUNT_TIME {value | DEFAULT | UNLIMITED}]
[ALLOW_TOKEN_NUM {value | DEFAULT | UNLIMITED}]
[ADD HOST {ip | ip range} [, {ip | ip range}] ...]
[DROP HOST {ip | ip range} [, {ip | ip range}] ...]
[ADD NOT_ALLOW_HOST {ip | ip range} [, {ip | ip range}] ...]
[DROP NOT_ALLOW_HOST {ip | ip range} [, {ip | ip range}] ...]
[ADD ALLOW_DATETIME {time range} [, {time range}] ...]
[DROP ALLOW_DATETIME {time range} [, {time range}] ...]
[ADD NOT_ALLOW_DATETIME {time range} [, {time range}] ...]
[DROP NOT_ALLOW_DATETIME {time range} [, {time range}] ...]
}
以下示例禁用名为 test 的用户:
taos> ALTER USER test ENABLE 0;
Query OK, 0 of 0 rows affected (0.001160s)
自企业版 v3.4.2.1 起,ALTER USER ... SYSINFO {0|1} 会联动修改用户的 SYSINFO_0 / SYSINFO_1 角色;授予高阶系统角色也会联动提升 SYSINFO 属性。详见 权限管理。
TOTP 双因素认证
TOTP 双因素认证为企业版功能,自企业版 v3.4.0.1 起支持。
创建 / 更新 TOTP 密钥
CREATE TOTP_SECRET FOR USER user_name;
若用户尚未创建 TOTP 密钥,本命令为其创建;若已创建,则更新密钥。无论哪种情况,都会返回新密钥,且仅展示一次,请及时保存。系统会为已创建 TOTP 密钥的用户自动启用 TOTP 双因素认证。
启用后,TDengine 要求 TOTP 验证码长度为 6 位,且每 30 秒更新一次;请按此参数配置验证码生成器,否则客户端可能无法登录。
为用户 test 创建 TOTP 密钥的示例:
taos> CREATE TOTP_SECRET FOR USER test;
totp_secret |
=======================================================
ERIRPLZL4ZBFTPT5BNXMVFPR4Z3PTHUWTBTCNZPOHYPYQGTD25XA |
Query OK, 1 row(s) in set (0.002314s)
删除 TOTP 密钥
DROP TOTP_SECRET FROM USER user_name;
删除用户的 TOTP 密钥后,该用户的 TOTP 双因素认证将被禁用。
示例:
taos> DROP TOTP_SECRET FROM USER test;
Drop OK, 0 row(s) affected (0.002295s)
令牌管理
令牌管理为企业版功能,自企业版 v3.4.0.0 起支持。
创建令牌
CREATE TOKEN [IF NOT EXISTS] token_name FROM USER user_name [ENABLE {1|0}] [TTL value] [PROVIDER value] [EXTRA_INFO value];
令牌名称最长 31 个字节。
ENABLE:是否启用该令牌。1表示启用,0表示未启用;未启用的令牌不能用于登录。缺省值为1。TTL:令牌有效时长,单位为天,从创建时起算。默认0,表示永久有效。PROVIDER:令牌提供者名称,最长 63 个字节。EXTRA_INFO:由应用管理的附加信息,最长 1023 字节。
以下为用户 test 创建名为 test_token 的令牌。注意:令牌值仅在创建时展示一次,后续无法查询,请及时保存。
taos> CREATE TOKEN test_token FROM USER test;
token |
==================================================================
BsyjYKxhCMntZ3pHgweCd2uV2C8HoGKn8Mvd49dRRCtzusX0P1mgqRMrG7SzUca |
Query OK, 1 row(s) in set (0.003018s)
查看令牌
普通用户仅能查看自己的令牌:
SHOW TOKENS;
示例
taos> SHOW TOKENS;
name | user | provider | enable | create_time | expire_time | extra_info |
=========================================================================================================
root_token | root | | 1 | 2025-12-25 10:02:28.000 | 1970-01-01 08:00:00.000 | |
test_token | test | | 1 | 2025-12-25 10:01:47.000 | 1970-01-01 08:00:00.000 | |
Query OK, 2 row(s) in set (0.003313s)
也可查询 information_schema.ins_tokens:
taos> SELECT * FROM information_schema.ins_tokens;
name | user | provider | enable | create_time | expire_time | extra_info |
=========================================================================================================
root_token | root | | 1 | 2025-12-25 10:02:28.000 | 1970-01-01 08:00:00.000 | |
test_token | test | | 1 | 2025-12-25 10:01:47.000 | 1970-01-01 08:00:00.000 | |
Query OK, 2 row(s) in set (0.007438s)
修改令牌
ALTER TOKEN token_name [ENABLE {1|0}] [TTL value] [PROVIDER value] [EXTRA_INFO value];
修改 TTL 时,新的有效时长从修改时刻起算。
删除令牌
DROP TOKEN [IF EXISTS] token_name;
删除用户时,其令牌会一并级联删除。








