Files
portal-mini-go/scripts/001_rbac.sql
T
2026-10-25 22:47:13 +08:00

57 lines
2.4 KiB
SQL

-- 后台 RBAC 权限管理建表脚本(admin_ 前缀,与小程序业务物理隔离)。
-- 执行顺序:先建表,再建索引(GORM 已含唯一索引定义,此处显式列出便于审阅)。
-- 种子管理员与 super_admin 角色由服务启动时自动初始化(见 rbac.Provider.Seed)。
CREATE TABLE IF NOT EXISTS `admin_users` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`username` VARCHAR(64) NOT NULL,
`password_hash` VARCHAR(255) NOT NULL,
`nickname` VARCHAR(128) DEFAULT '',
`status` TINYINT NOT NULL DEFAULT 1,
`created_at` DATETIME(3) NULL,
`updated_at` DATETIME(3) NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_admin_users_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `admin_roles` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`code` VARCHAR(64) NOT NULL,
`name` VARCHAR(128) NOT NULL,
`description` VARCHAR(512) DEFAULT '',
`status` TINYINT NOT NULL DEFAULT 1,
`created_at` DATETIME(3) NULL,
`updated_at` DATETIME(3) NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_admin_roles_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `admin_permissions` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`code` VARCHAR(128) NOT NULL,
`name` VARCHAR(128) NOT NULL,
`type` VARCHAR(16) NOT NULL DEFAULT 'api',
`method` VARCHAR(16) DEFAULT '',
`path` VARCHAR(255) DEFAULT '',
`parent_id` BIGINT UNSIGNED NOT NULL DEFAULT 0,
`sort` INT NOT NULL DEFAULT 0,
`created_at` DATETIME(3) NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_admin_permissions_code` (`code`),
KEY `idx_admin_permissions_parent` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `admin_user_roles` (
`admin_id` BIGINT UNSIGNED NOT NULL,
`role_id` BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (`admin_id`, `role_id`),
KEY `idx_admin_user_roles_role` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `admin_role_permissions` (
`role_id` BIGINT UNSIGNED NOT NULL,
`permission_id` BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (`role_id`, `permission_id`),
KEY `idx_admin_role_permissions_perm` (`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;