2.1 安全性增强
1 认证插件
mysql.user表中的plugin更改成not null,5.7开始不再支持mysql_old_password的认证插件,推荐全部使用mysql_native_password。从低版本升级到5.7的时候,需要处理两个兼容性问题。
[兼容性] 需要先迁移mysql_old_password的用户,然后进行user表结构的升级:
1. 迁移mysql_old_password用户 MySQL 5.7.2之前的版本,是根据password的hash value来判断使用的认证插件类型,5.7.2以后的版本,plugin字段为not null,就直接根据plugin来判断了。新的密码从password字段中,保存到新的字段authentication_string中,password字段废弃处理。
如果user是隐式的mysql_native_password。直接使用sql进行变更:
如果user是隐式的或者显示的mysql_old_password, 首先通过以下sql进行查询:
如果存在记录,就表示还有使用mysql_old_password的user,使用以下sql进行用户的迁移:
2. user表结构升级 通过mysql_upgrade直接进行升级,步骤如下[5.6->5.7]:
stop MySQL 5.6实例
替换5.7的mysqld二进制版本
使用5.7启动实例
run mysql_upgrade升级系统表
重启MySQL 5.7实例
2 密码过期
用户可以通过ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE;
这样的语句来使用户的密码过期。
并新增加 default_password_lifetime来表示用户密码自动过期时间,从5.7.10开始,其默认值从0变更到了360,也就是默认一年过期。
可以通过以下两种方法禁止过期:
[兼容性] 只需要通过mysql_upgrade升级mysql.user系统表就可以使用密码过期新功能。
3 账号锁定
用户可以通过以下语法进行账号锁定,阻止这个用户进行登录:
[兼容性] 只需要通过mysql_upgrade升级mysql.user系统表就可以使用密码过期新功能。
4 SSL连接
如果mysqld编译使用的openssl,在启动的时候,默认创建SSL, RSA certificate 和 key 文件。 但不管是openssl还是yassl,如果没有设置ssl相关的参数,mysqld都会在data directory里查找ssl认证文件,来尽量打开ssl特性。
[兼容性] 不存在兼容性的问题
5 安装数据库
5.7开始建议用户使用mysqld --initialize
来初始化数据库,放弃之前的mysql_install_db的方式,新的方式只创建了一个root@localhost的用户,随机密码保存在~/.mysql_secret文件中,并且账号是expired,第一次使用必须reset password,并且不再创建test db。
[兼容性] 不存在兼容性的问题
Last updated