课程名称 :玩转MySQL8.0新特性
课程章节:账户与安全
讲师:董旭阳
课程内容:
mysql8.0新特性
1,账户与安全
2,窗口函数
3,优化器索引
4,InnoDB增强
5,通用表达式
6,json增强
一、账户与安全
1、强制分开用户创建和用户授权
#、prompt 字符:可以更改mysql命令提示符
二、认证插件更新
1、之前版本是mysql_native_password,8.0版本是caching_sha2_password
mysql> show variables like '%default%';
+---------------------------------+-----------------------+
| Variable_name | Value |
+---------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
2、由于认证插件的更新,客户端需要升级才可以连接到8.0,或者服务器修改用户认证插件:
alter user root@'%' identified with mysql_native_password by '123';
三、密码管理
1、8.0版本开始限制重复使用以前的密码
password_history=3 --不允许和最近三次密码一样
password_reuse_interval=90 --不允许和最近90天内的密码一样
password_require_current=ON --修改密码需要提供当前密码
语句:
alter user user@host identified by 'new_password' replace 'cur_password';
2、这三个变量可以全局设置或者利用alter user user@host identified by '123' password_history 针对用户设置
3、历史密码都是保存在mysql.password_history
#、set persist var=value --对变量持久化修改
原理:将persist设置的变量写入到数据目录下的配置文件中(json格式),服务器启动时也会读取该配置文件
四、角色管理
1、8.0版本提供了角色管理功能,角色是一组权限的集合,即把一组权限放在一起并起一个名字,就成为了一个角色
2、角色分配步骤
创建角色
create roll 'new_role'; --创建了一个用户
给角色分配权限
grant insert,select on test.* to 'new_role';
给用户指定角色
grant [default] 'new_role' to 'user'@host; --不使用default的话,默认登录后需要用set role激活角色,使用default后就已经激活
指定用户
set role 'new_role';
3、查看用户权限
show grant for 'user'@host using 'new_role';
4、显式当前用户使用的角色
select current_role();
五、优化器索引
1、隐藏索引(invisible index)
不会被优化器使用,但是仍然需要进行维护
create index index_name on tab(col) invisible;
#、如果想设置优化器对隐藏索引可见,可以修改optimizer_switch中的use_invisible_index=on;(可以会话级别修改)
#、修改索引可见性
alter table tab alter index index_name visible;
#、主键不能设置为不可见
使用场景:
软删除 --删除一个索引,并不用真的删除,将其设置为隐藏索引即可
2、降序索引
8.0版本中只有innodb的Btree支持降序索引
8.0版本中不再对group by操作进行隐式排序
3、函数索引
支持在索引中使用函数(表达式)的值
支持降序索引,支持json数据的索引
函数索引基于虚拟列功能实现
课程收获 :
了解了mysql 8.0 的新的特性,掌握了账号与安全的相关知识。内容实用,简洁易懂,逻辑清晰。