玩转MySQL8.0新特性(一)账户与安全

MySQL8.0进行了全面改进,一些关键的增强包括:

一、账户与安全
二、优化器索引
三、通用表表达式
四、窗口函数
五、InnoDB增强
六、JSON增强

一、账号与安全

  1. 用户创建与授权:

5.7版本用户创建与授权一步完成:

grant all privileges on *.* to 'tony'@'%' identified by 'tony@2019';

8.0版本创建用户以及授权需要分两个步骤执行:
1)创建用户

create user 'tony'@'%' identified by 'tony@2019';

2)用户授权

grant all privileges on *.* to 'tony'@'%';

好处:语句的语义更清晰,不存在歧义性操作。

  1. 认证插件更新:mysql8.0中默认的身份认证插件是caching_sha2_password,替换了之前mysql5.7版本的mysql_native_password,好处是性能更优,安全性更强。

    适配旧的认证插件两个方法:

1)通过修改配置文件default-authentication-plugin=mysql_native_password;
2)修改mysql.user表

alter user 'tony'@'%' identified with mysql_native_password by 'tony123456';
  1. 密码管理: 8.0版本开始限制重复使用以前的密码,密码管理策略有3个变量

    password_history=3 -- 不允许和最近三次密码相同

    password_reuse_interval=90 -- 不允许和最近90天内使用过的密码相同

    password_require_current=ON -- 修改密码需要提供当前密码

    语句:alter user user@host identified by 'new_password' replace 'cur_password';

    设置这三个变量两种方式:
    1)全局:修改配置文件password_history=x,但需要重启mysql;另外一种,8.0支持对变量持久化修改,set persist password_history=x;

    原理:将persist设置的变量写入到数据目录下的mysqld-auto.cnf配置文件中,服务器启动时除了读取全局配置,也会读取该配置文件

    2)用户级别:针对单个用户设置

    alter user 'tony'@'%' password history 6;

    历史密码保存在mysql.password_history

  2. 角色管理:角色是一组权限的集合,为用户赋予统一的角色,权限的修改直接通过角色来进行,无需为每个用户单独授权。角色分配步骤如下:

    1)创建角色

    create roll 'write_role';

    2)给角色分配权限

    grant insert,select on testdb.* to 'write_role';

    3)给用户赋予角色

    grant 'write_role' to 'user1';

    4)查看用户权限

    show grant for 'user1';

    5)启用角色,设置了角色,如果不启用,用户登录的时候,依旧没有该角色的权限

    set default role 'write_role' to 'user1';

    6)收回角色权限

    revoke insert,select on testdb.* from 'write_role';
4 人推荐

声明:本文原创发布于加藤非博客,转载请注明出处:加藤非博客 jiatengfei.com 。如有侵权,请联系本站删除。

加藤非博客
请先登录再发表评论
  • 最新评论

  • 总共0条评论