security_tables.sql 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. -- 用户表
  2. CREATE TABLE `sys_user` (
  3. `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  4. `username` VARCHAR(50) NOT NULL COMMENT '用户名',
  5. `password` VARCHAR(100) NOT NULL COMMENT '密码',
  6. `nickname` VARCHAR(50) DEFAULT NULL COMMENT '昵称',
  7. `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
  8. `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
  9. `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像',
  10. `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-正常',
  11. `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
  12. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  13. `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
  14. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  15. `del_flag` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志:0-正常,1-删除',
  16. `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
  17. PRIMARY KEY (`id`),
  18. UNIQUE KEY `uk_username` (`username`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表';
  20. -- 角色表
  21. CREATE TABLE `sys_role` (
  22. `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '角色ID',
  23. `role_name` VARCHAR(50) NOT NULL COMMENT '角色名称',
  24. `role_key` VARCHAR(50) NOT NULL COMMENT '角色权限字符串',
  25. `role_sort` INT(4) NOT NULL DEFAULT 0 COMMENT '显示顺序',
  26. `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-正常',
  27. `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
  28. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  29. `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
  30. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  31. `del_flag` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志:0-正常,1-删除',
  32. `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
  33. PRIMARY KEY (`id`),
  34. UNIQUE KEY `uk_role_key` (`role_key`)
  35. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统角色表';
  36. -- 菜单表(支持2级菜单)
  37. CREATE TABLE `sys_menu` (
  38. `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
  39. `menu_name` VARCHAR(50) NOT NULL COMMENT '菜单名称',
  40. `parent_id` BIGINT(20) NOT NULL DEFAULT 0 COMMENT '父菜单ID,0表示顶级菜单',
  41. `menu_type` CHAR(1) NOT NULL COMMENT '菜单类型:M-目录,C-菜单,F-按钮',
  42. `path` VARCHAR(200) DEFAULT NULL COMMENT '路由地址',
  43. `component` VARCHAR(255) DEFAULT NULL COMMENT '组件路径',
  44. `perms` VARCHAR(100) DEFAULT NULL COMMENT '权限标识',
  45. `icon` VARCHAR(100) DEFAULT NULL COMMENT '菜单图标',
  46. `order_num` INT(4) NOT NULL DEFAULT 0 COMMENT '显示顺序',
  47. `visible` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否可见:0-隐藏,1-显示',
  48. `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-正常',
  49. `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
  50. `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  51. `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
  52. `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  53. `del_flag` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志:0-正常,1-删除',
  54. `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
  55. PRIMARY KEY (`id`),
  56. KEY `idx_parent_id` (`parent_id`)
  57. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统菜单表';
  58. -- 用户角色关联表
  59. CREATE TABLE `sys_user_role` (
  60. `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  61. `user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
  62. `role_id` BIGINT(20) NOT NULL COMMENT '角色ID',
  63. PRIMARY KEY (`id`),
  64. UNIQUE KEY `uk_user_role` (`user_id`, `role_id`)
  65. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
  66. -- 角色菜单关联表
  67. CREATE TABLE `sys_role_menu` (
  68. `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  69. `role_id` BIGINT(20) NOT NULL COMMENT '角色ID',
  70. `menu_id` BIGINT(20) NOT NULL COMMENT '菜单ID',
  71. PRIMARY KEY (`id`),
  72. UNIQUE KEY `uk_role_menu` (`role_id`, `menu_id`)
  73. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表';
  74. -- 初始化数据
  75. -- 插入超级管理员用户 (密码: admin123,需要BCrypt加密)
  76. INSERT INTO `sys_user` (`id`, `username`, `password`, `nickname`, `status`)
  77. VALUES (1, 'admin', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE/TU9v8ffdQ6q', '超级管理员', 1);
  78. -- 插入普通用户 (密码: user123)
  79. INSERT INTO `sys_user` (`id`, `username`, `password`, `nickname`, `status`)
  80. VALUES (2, 'user', '$2a$10$N.ZOn9G6/YLFixAOPMg/h.z7pCu6v2XyFDtC4q.jeeGm/TEZySmDu', '普通用户', 1);
  81. -- 插入角色
  82. INSERT INTO `sys_role` (`id`, `role_name`, `role_key`, `role_sort`)
  83. VALUES (1, '超级管理员', 'admin', 1);
  84. INSERT INTO `sys_role` (`id`, `role_name`, `role_key`, `role_sort`)
  85. VALUES (2, '普通用户', 'user', 2);
  86. -- 插入一级菜单(目录)
  87. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `icon`, `order_num`, `perms`)
  88. VALUES (1, '系统管理', 0, 'M', '/system', 'system', 1, NULL);
  89. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `icon`, `order_num`, `perms`)
  90. VALUES (2, '用户中心', 0, 'M', '/user', 'user', 2, NULL);
  91. -- 插入二级菜单
  92. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `order_num`, `perms`)
  93. VALUES (101, '用户管理', 1, 'C', '/system/user', 'system/user/index', 1, 'system:user:list');
  94. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `order_num`, `perms`)
  95. VALUES (102, '角色管理', 1, 'C', '/system/role', 'system/role/index', 2, 'system:role:list');
  96. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `order_num`, `perms`)
  97. VALUES (103, '菜单管理', 1, 'C', '/system/menu', 'system/menu/index', 3, 'system:menu:list');
  98. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `order_num`, `perms`)
  99. VALUES (201, '个人信息', 2, 'C', '/user/profile', 'user/profile/index', 1, 'user:profile:view');
  100. -- 插入按钮权限
  101. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `order_num`, `perms`)
  102. VALUES (1011, '用户新增', 101, 'F', 1, 'system:user:add');
  103. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `order_num`, `perms`)
  104. VALUES (1012, '用户修改', 101, 'F', 2, 'system:user:edit');
  105. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `order_num`, `perms`)
  106. VALUES (1013, '用户删除', 101, 'F', 3, 'system:user:remove');
  107. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `order_num`, `perms`)
  108. VALUES (1021, '角色新增', 102, 'F', 1, 'system:role:add');
  109. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `order_num`, `perms`)
  110. VALUES (1022, '角色修改', 102, 'F', 2, 'system:role:edit');
  111. INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `order_num`, `perms`)
  112. VALUES (1023, '角色删除', 102, 'F', 3, 'system:role:remove');
  113. -- 用户角色关联
  114. INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (1, 1);
  115. INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (2, 2);
  116. -- 角色菜单关联(超级管理员拥有所有权限)
  117. INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
  118. VALUES
  119. (1, 1), (1, 2), (1, 101), (1, 102), (1, 103), (1, 201),
  120. (1, 1011), (1, 1012), (1, 1013), (1, 1021), (1, 1022), (1, 1023);
  121. -- 普通用户只有查看权限
  122. INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
  123. VALUES (2, 2), (2, 201);