Mysql8.0是在Mysql5.7之后,新受欢迎的版本,分享几个新的特性给大家。
1.数据库的默认字符集从latin1改为utf8mb64:
show variables like "character_set_database";
2.通用表达式:
WITH cte as(SELECT * FROM goods) SELECT g.* ,(SELECT cte.name FROM cte WHERE cte.id=g.gid) AS gname FROM goods AS g;
3.DDL原子化:数据定义语言操作,如果中间失败,回滚操作。
4.支持降序索引
5.统计直方图
6.全局变量持久化:
//会保存到数据目录下的mysqld-auto.cnf,再次启动时读取,覆盖默认配置
SET PERSIST max_connections=151;
7.密码到期更换策略:default_password_lifetime,
ALTER USER root@localhost PASSWORD EXPIRE INTERVAL 260 DAY; ALTER USER root@localhost PASSWORD EXPIRE DEFAULT;
8.管理角色:
//给角色赋予权限
CREATE ROLE role_tt;
//创建角色
GRANT SELECT on db.* to 'role_tt';
//创建用户
CREATE USER 'mysql1'@'%' identified by '123456';
//为用户赋予角色
GRANT 'role_tt' TO 'mysql1'@'%';
//给角色增加insert权限
GRANT INSERT ON db.* to 'role_tt';
//删除角色insert权限 REVOKE INSERT ON db.* FROM 'role_tt';
//查看默认角色信息 SELECT * FROM mysql.default_roles;
//查看角色和用户的关系 SELECT * FROM mysql.role_edges;
//删除角色 DROP ROLE role_tt;
9.日志分类更详细:日志新增错误信息编号分类[MY-010311]和错误所属子系统[Server]
10.从服务器多源复制
在CHANGE MASTER 最后加入
FOR CHANNEL 'channel name';
START SLAVE FOR CHANNEL 'channel name';
SHOW SLAVE STATUS FOR CHANNEL 'channel name';
11.全局表空间
//创建表空间
CREATE TABLESPACE tablespace_name ADD datafile 'tablespace.ibd' file_block_size=16K;
//在删除依赖表空间的表之后,删除表空间
DROP TABLESPACE tablespace_name;
12.支持不可见索引
CREATE TABLE test1(a int,b int,index idx_a_b(a,b desc) invisible);
//设置索引可见,主键不可以设置为invisible
ALTER TABLE test1 ALTER index idx_a_b visible;
其他新特性期待大家留言探讨 !