security_tables.sql 7.9 KB

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