MySQL5.7版本新特性(四)

第四章安全及管理方面增强

一、不在支持old_password认证

在MySQL5.7之前,MySQL的认证一直是存在两种方式的,一种是mysql_old_password,这种认证方式是在4.1之前,所使用的数据库用户密码的加密方式,在4.1之后,又引入了一种mysql_native_password的加密方式。在MySQL5.7之前,这两种加密方式是同时存在的,虽然old_password已经不建议使用很久了,但是还一直存在MySQL中,而在MySQL5.7的时候正式移除了这种加密方式。

另外,在MySQL5.7初始化之后,数据库中只会存在一个root用户,而且只能通过localhost来登录。而在MySQL5.7之前,除了存在这种用户之外,可能还会存在其他的用户,并且还会存在一个匿名用户,也就是没有用户名和密码就可以登录的用户。为了安全,在MySQL5.7的时候把其他用户全删除掉了,只提供一个通过localhost登录的root用户,并且密码是在初始化数据库的时候自动生成的,在第一次登录的时候必须要重设这个密码才能进行正常的使用。

在MySQL中mysql数据库的user表中,有一个plugin的字段,记录的就是MySQL的加密方式,在MySQL5.7中,要求plugin这一列是不能为空的,如果为空就不能进行登录。另外还提供了几个属性列,就是password_expired(password的过期时间),password_last_changed(最后一次修改的时间),password_lifetime(password的生命周期),account_locked(账号是否被锁定)。

二、增加账号默认过期时间,加强了对账号的管理功能

它的账号默认存活时间是360天,也就是说如果我们在360天之内没有改变任何用户密码的话,这个账号就会被视为过期,之后如果再用这个账号登录的话,就会报一个1820的错误,意思就是说你必须在重新设置密码之后再使用这个账号。

1.png

如果我们在生产环境中来使用MySQL5.7的话一定要注意,因为生产环境中的账号我们很难对它进行更改,而一旦更改,应用程序的配置文件就要进行更改,不改应用程序就会报错。如果要在生产环境中使用MySQL5.7的话,建议将default_password_lifetime的值设置为0,这样就关闭了账号默认过期的这个功能。

如果生产环境中是有密码更新策略的,那么我们也可以把过期时间设置为符合我们更新策略的过期时间,这样就使得我们的数据库更加的安全。

三、增强了对账号的管理功能
我们可以使用help create user的语法。我们在建立用户的时候,可以指定用户的过期时间以及密码的加密方式,可以使用“ CREATE USER ”或者“ ALTER USER ”对账号进行解锁或者锁定的操作。在我们的工作中经常会出现一些需求,比如说有一些账号在进行SQL注入,那么这个时候我们就需要把这个账号停用以减少数据的损失。

在5.7之前,如果我们想要提供一个账号,有两种方式,一种是改变账号的名字,另一种就是改变账号的密码。无论使用哪种方式都是对账号本身的属性进行了更改,比如说如果我们要改变密码,没有对原始密码进行记录的话,那很难再改变成原始的密码,这样就会对应用程序进行影响。

在5.7之后,如果要暂停某一个账号的使用的话就非常容易了,我们可以直接把这个账号进行锁定,那么这个账号就不能登录了,当我们解决了相应问题之后,我们可以再对这个账号进行解锁。

四、增加了sys管理数据库
这个数据库可以为DBA对数据库管理提供很多管理信息。

2.png

sys库里面的这些表就是为我们提供的管理视图。

3.png

我们来看一个表的实际定义。它其实就是一个管理视图,而这些视图的数据源,就是performance_schema中的表。在MySQL5.7之前,如果我们为了一些性能的考虑,我们会关闭对performance_schema这个数据库的信息收集,或者干脆就禁用了performance_schema。因为在MySQL5.6的时候可能会看到一些测试报告,我们开启performance_schema会对数据库性能造成很大的影响。

4.png

在MySQL5.7之后,由于很多功能都是依赖performance_schema这个库的,所以建议要使用MySQL5.7的话还是要将它打开。另外一些系统表,全局变量的设置本来是在information这个库中的,而在5.7之后,也把它移到了performance_schema这个库中,比如说global_status和global_variables。

sys这个库在MySQL5.6的时候我们也可以通过一些第三方插件来进行建立,在5.7的时候引入到了原生的数据库系统中,所以可以更方便的来使用这些管理视图。

Last modification:May 24th, 2019 at 10:09 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment