MySQL 5.7 的目标是成为发布以来最安全的 MySQL 服务器,其在 SSL/TLS 和全面安全开发方面有一些重要的改变。
1.用户插件更新
5.7版本的用户表mysql.user要求plugin字段非空,且默认值是mysql_native_password,并且不再支持mysql_old_password。
2.新增密码过期功能
DBA可以设置任何用户的密码过期时间。已经过期的用户连接到Mysql,将会强制用户修改密码。具体详见官方文档Password Management#设置 用户的过期时间为 90天
ALTER USER fate@'%' PASSWORD EXPIRE INTERVAL 90 DAY;
#设置 用户密码永远不过期
ALTER USER fate@'%' PASSWORD EXPIRE NEVER;
如果不喜欢过期时间限制,可以直接把默认值设置为永不过期default_password_lifetime=0
3.新增用户锁功能
DBA可以对一个账户加锁或者是解锁,被加锁的用户将不能访问数据库。Access denied for user 'user_name'@'host_name'.
Account is locked.
4.SSL 特性
MySQL 5.7版本提供了更为简单SSL安全访问配置,并且默认连接就采用SSL的加密方式。细心的朋友在看官方文档的时候 会注意到 安装步骤中多了一安装SSL的步骤
5.使用更安全的初始化方式
默认使用mysqld --initialize来初始化数据库,逐步废弃mysql_install_db的安装方式(mysql_install_db <5.7.6<= mysqld —initialize) ,使用 initialize 参数初始化数据库有如下特性:安装过程中只会创建一个 root账号('root'@'localhost'),并且生成一个标记为过期的临时密码。DBA必须要使用这个临时密码来连接到数据库,然后设置一个新密码。数据库服务器会把这个随机密码写到错误日志(error log)里。
b 不创建匿名账号
c 不创建test数据库
特别强调与—initialize 不同 ,初始化的时候 使用参数shell> bin/mysqld --initialize-insecure --user=mysql
则会生成一个无密码的root 账号。更详细的请移步 官方文档