MySQL 8新特性
选择MySQL 8的背景:MySQL 5.6已经停止版本更新了,对于 MySQL 5.7 版本,其将于 2023年 10月31日 停止支持。后续官方将不再进行后续的代码维护。
另外,MySQL 8.0 全内存访问可以轻易跑到 200W QPS,I/O 极端高负载场景跑到 16W QPS,如下图:
上面三个图来自于MySQL官网:www.mysql.com/why-mysql/b…
除了高性能之外,MySQL 8还新增了很多功能,我找了几个比较有特点的新特性,在这里总结一下。
本文使用的MySQL版本为
8.0.29
账户与安全
用户的创建和授权
在MySQL之前的版本,创建用户和给创建的用户授权可以一条语句执行完成:
grant all privileges on *.* to 'zhangsan'@'%' identified by 'Fawai@kuangtu6';
在MySQL 8中,创建用户和授权需要分开执行,否则会报错,执行不成功:
在 MySQL 8
中,需要分2不完成创建用户和授权的操作:
-- 创建用户
create user 'zhangsan'@'%' identified by 'Fawai@kuangtu6';
-- 授权
grant all privileges on *.* to 'zhangsan'@'%';
再执行创建用户时,出现了如下错误:
这是因为我的 MySQL 8
安装完成后,进入命令行用的还是临时密码,并未修改root的初始密码,需要修改密码才允许操作。
修改密码操作:
-- 修改root密码
alter user user() identified by 'Root@001';
再创建用户即可:
mysql> create user 'zhangsan'@'%' identified by 'Fawai@kuangtu6';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on *.* to 'zhangsan'@'%';
Query OK, 0 rows affected (0.00 sec)
认证插件
在MySQL中,可以用 show variables
命令查看一些设置的MySQL变量,其中密码认证插件的变量名称是 default_authentication_plugin
。
MySQL 5.7版本 :
mysql> show variables like '%default_authentication%';
+-------------------------------+-----------------------+
| Variable_name | Value |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
+-------------------------------+-----------------------+
1 row in set (0.02 sec)
MySQL 8版本 :
mysql> show variables like '%default_authentication%';
+-------------------------------+-----------------------+
|