cisd/docs/sql/tms_schema_init_steps.md
2026-05-26 11:29:44 +08:00

2.7 KiB

TMS 初始化 SQL 执行说明

空库初始化当前推荐使用 V2__tms_schema_full.sql

V1__tms_schema_full.sql 仅用于旧数据库迁移:它会在已有 tms_auth_full_account 表上新增 password_digest,把固定角色席位统一重置为默认口令 Sunyard@123,并置为强制改密。旧库不能用 V2 直接覆盖执行。

这份脚本已经整理成“最终库结构初始化版”,适合空库直接初始化,不再按 migration 逐步执行 ALTER / RENAME,也不依赖后置 UPDATE 修补种子数据。

如果你在 TiDB 客户端里一次性执行整份文件,出现下面这类报错:

SQL Error [8130] [HY000]: client has multi-statement capability disabled

这不是 SQL 内容本身错误,而是“客户端把整份脚本作为一次多语句请求发送”,而当前 TiDB 连接未开启 multi-statement。

推荐做法

方式一:用脚本执行模式运行最终初始化脚本

优先用客户端的 Run Script / Execute Script 模式执行:

方式二:用“脚本执行”而不是“单次执行”

如果你的客户端支持 Run Script / Execute Script,优先用脚本模式。
脚本模式通常会把每条语句分开发送,而不是整份文件一次发给数据库。

方式三:使用命令行客户端导入

例如:

mysql -h <host> -P <port> -u <user> -p tms < /path/to/V2__tms_schema_full.sql

或者先登录后:

source /path/to/V2__tms_schema_full.sql;

方式四:实在只能单条执行时

先执行:

CREATE DATABASE IF NOT EXISTS tms
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_general_ci;

USE tms;

然后把 V2__tms_schema_full.sql 中的语句按分号逐条执行。

不推荐但可选

你也可以按报错提示开启:

SET GLOBAL tidb_multi_statement_mode='ON';

但这会影响实例级行为,有安全风险,不建议为了初始化脚本临时这么做,除非你明确知道数据库侧的风险边界并且由 DBA 允许。

当前默认账号种子

脚本已经包含 4 个固定角色账号:

  • SUPER_ADMIN
  • KEY_ADMIN
  • AUDIT_ADMIN
  • OPS_ADMIN

默认口令均为 Sunyard@123,其中:

  • KEY_ADMIN 默认 ACTIVE
  • 其他角色默认 UNENABLED
  • 所有角色 need_change_password = 1