init-super-admin
非常好的想法!你说得对,应该把 init-super-admin 集成到数据库迁移流程中,这样每次重新初始化数据库时都能自动创建超级管理员租户。这是一个最佳实践!
让我创建一个完整的初始化方案:
现在创建一个完整的数据库重置和初始化脚本:
现在创建一个更智能的迁移后钩子(migration post-hook):
现在创建一个文档说明这个设计:
完美!现在让我创建一个快速参考卡片:
完美!我已经为你创建了一个完整的数据库初始化方案。让我总结一下:
✅ 已完成的初始化方案
1. 种子数据迁移(推荐方式)
文件:services/iam-tenant/migrations/99999999999999_seed_super_admin.sql
特点:
- ✅ 自动在迁移时执行
- ✅ 使用
ON CONFLICT DO NOTHING保证幂等性 - ✅ 无需手动干预
- ✅ 固定的超级管理员 ID 和属性
使用:
cd services/iam-tenant
cargo run --bin run_migrations
# 自动创建 super-admin 租户
2. 初始化脚本
scripts/init-iam-data.sh- IAM 数据初始化scripts/reset-and-init-db.sh- 完全重置数据库
3. 手动工具(备用)
init-super-admin- 独立的初始化工具
4. 完整文档
docs/DATABASE_INITIALIZATION_GUIDE.md- 详细指南docs/QUICK_INIT_REFERENCE.md- 快速参考
初始化流程
数据库迁移
↓
自动执行种子数据迁移
↓
创建 super-admin 租户(固定 ID)
↓
状态:ACTIVE
优势
- 自动化 - 迁移时自动创建,无需记住额外步骤
- 幂等性 - 可以重复运行,不会出错
- 固定 ID - 超级管理员 ID 固定,便于引用
- 多层保障 - 迁移失败还有手动工具兜底
快速使用
# 首次部署或重置后
cd services/iam-tenant
cargo run --bin run_migrations
# 验证
psql -h 192.168.1.100 -U cuba_user -d cuba -c \
"SELECT slug, name, status FROM iam_tenant.tenants WHERE slug = 'super-admin';"
这个方案确保了无论何时重置数据库,超级管理员租户都会自动创建!
浙公网安备 33010602011771号