这口吻,估计马上就的把电话挂了, 不过MYSQL 8 的用户管理,老手,新人,还是了解一下比较好,当然如果你已经有了 ORACLE ,PG, SQL SERVER 等数据库的使用经验,你会发现 MYSQL 越来越“老”, 换个词,成熟。
MYSQL 5.X MYSQL 的用户管理,那些人(You know what I am talk about.)是残缺不全的,没有角色,没有更细分的权限管理(其实有,只不过你可能不知道),MYSQL 8 将这些残次的概念会一刷到底,换句话MYSQL 8的用户管理,你挑不到什么刺儿了。
先说点体外化,关于数据库安全,不论哪种数据库,其实都需要注意一点默认的账号应该怎么样。这里借用 MYSQL official one statment.
Do not ever give anyone (except Mysql root Accounts) access to the user table in the mysql system database ! That is critical.
我估计百分之 99.99%的人做不到,包括我,看来在安全方面还有更多的工作要做。
先说说MYSQL 8 在用户管理和安全上的变化
1 用户的密码加密方式改变了
2 关于用户方面的插件改变了
与其说是插件的方式改变了,不如说整体MYSQL 8 对待插件的概念改变了,整体MYSQL 8 都可以看做一个组件,其他的东西都是组件,有点程序上的微服务的意思,或许吧。
另外使用PERCONA 的 8.015 在
INSTALL COMPONENT 'file://component_validate_password';
会报错,的原因是这个组件已经安装了,并且和老的plug相安无事的
如何从老的插件更换到新的组件,找个时间再说。
不安装新的组件,以下的两个配置是无法生效,MYSQL 是无法启动的,同时如果使用官版,RPM ,SUSE, 等安装方式,是自动安装新的组件,而如果是编译和二进制的方式,则很可能不自动安装,这点是要注意的,PERONCA 二进制是自带默认安装的。
validate_password.length=10
validate_password.number_count=2
话归正题,MYSQL 8 既然支持ROLE ,我们的赶紧去学习,怎么去建立一个ROLE ,给ROLE 赋予权限,对用户赋予ROLE 是当前需要马上懂得的。
下面是
上图是一些简单的角色和用户之间的授予和回收的一些命令
同时MYSQL 8.0 也可以创建一个用户,在通过一个用户赋予另一个用户权限的方法来 进行权限的COPY。
另外在PERCONA 的 8.015 中的用户密码加密已经使用了 caching_sha2_password, 想要通过 pt工具进行账号的迁移的打算可以就此为止了,因为那个工具不支持,会报错。