写在前面
mysql8的数据导入到mysql5 可能会有编码不支持
将 utf8mb4_unicode_ci 全部替换成 utf8_general_ci
再将 utf8mb4 全部替换成 utf8
在执行导入即可
mysql5
建库模板
CREATE DATABASE `basedb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER `base`@`localhost` IDENTIFIED BY 'password';
GRANT Delete, Insert, Select, Update ON `basedb`.* TO `base`@`localhost`;
FLUSH PRIVILEGES;
建表模板
CREATE TABLE `t_base` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'Id',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`is_deleted` tinyint(1) DEFAULT 0 COMMENT '是否删除:1删除,0未删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='模板表';
mysql8
建库模板
CREATE DATABASE `basedb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER `base`@`localhost` IDENTIFIED BY 'password';
GRANT Delete, Insert, Select, Update ON `basedb`.* TO `base`@`localhost`;
FLUSH PRIVILEGES;
建表模板
CREATE TABLE `t_base` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'Id',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`is_deleted` tinyint(1) DEFAULT 0 COMMENT '是否删除:1删除,0未删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='模板表';
权限管理
上面创建的账号只是纯业务账号
回顾一下,只是上面的授权,只能对表内的数据做增删查改
GRANT Delete, Insert, Select, Update ON `basedb`.* TO
`base`@`localhost`;
其实也差不多,只是权限不一样,当我们需要对表结构进行增删查改时,就需要用到其他的命令了.
GRANT create, alter, drop ON `basedb`.* TO
`base`@`localhost`;
下面分别对应
1.创建表create
2.修改表结构alter
3.删除表drop
这个权限不要分配到上面的业务账号, 建议再建一个数据库开发人员使用的账号! 而且不要给删除表权限, 有需要直接找管理员删 更安全!避免被误删了!
参考文章,里面挺完整的,有需要再补充: 传送门