【MySQL】5.7新特性之一

写在前面
   MySQL 5.7版本于2015年10月份左右 GA,至今已经半年多了,但自己一直没有时间来follow MySQL 5.7 新的特性,作为MySQL DBA 实在汗颜,以后会花时间来研究5.7 版本的特性并针对部分优化功能做出压力测试。本系列基于5.7.12 版本来讲述MySQL的新特性,同时也建议大家跟踪官方blog和文档,以尽快知悉其新的变化。
一 安全性
   MySQL 5.7 的目标是成为发布以来最安全的 MySQL 服务器,其在 SSL/TLS 和全面安全开发方面有一些重要的改变。
1.1 5.7表mysql.user要求plugin字段非空,且默认值是mysql_native_password,并且不再支持mysql_old_password。
1.2 增加密码过期,dba可以设置任何用户的密码过期时间,具体详见官方文档《密码过期策略 
  1. 设置 用户的过期时间为 90天
  2. ALTER USER yangyi@'127.0.0.1' PASSWORD EXPIRE INTERVAL 90 DAY;
  3. 设置 用户密码永远不过期
  4. ALTER USER yangyi@'127.0.0.1' PASSWORD EXPIRE NEVER;
可能大家都有如果业务系统的账号某一天突然过期了,业务受到影响 怎么办? 别担心那么可以设置密码永不过期。  
  1. default_password_lifetime=0
1.3 DBA可以通过对用户加锁/ 解锁进一步控制其访问db 。
例子
  1. mysql> alter user yang@'%' account lock;
  2. Query OK, 0 rows affected (0.00 sec)
  3. root@rac4:/srv/my3306/data# >mysql -uyang -h127.0.0.1 -p
  4. Enter password:
  5. ERROR 3118 (HY000): Access denied for user 'yang'@'localhost'. Account is locked.
  6. mysql> alter user yang@'%' account unlock;
  7. Query OK, 0 rows affected (0.00 sec)
1.4 SSL 特性  MySQL 5.7版本提供了更为简单SSL安全访问配置,并且默认连接就采用SSL的加密方式。细心的朋友在看官方文档的时候  会注意到 安装步骤中多了一安装SSL的步骤,具体关于SSL是什么,请参考 图解SSL和加密 
  1. shell> bin/mysql_ssl_rsa_setup # MySQL 5.7.6 and up
推荐两篇延伸阅读,关于SSL 特性我相信绝大多数数据库都没有开启,姜承尧文章中的测试案例显示弱开启SSL 性能开销在25% 左右。大家在尝试新的特性的时候 ,根据自己的业务做评估。
MySQL的SSL加密连接与性能开销
SSL/TLS in MySQL 5.7
1.5 使用更安全的初始化方式
逐步废弃mysql_install_db的安装方式使用 initialize代替(mysql_install_db <5.7.6<= mysqld  —initialize) ,使用  initialize 参数初始化数据库有如下特性 
a 只创建一个 root账号,并且生成一个临时的标记为过期密码
b 不创建其他账号
c 不创建test 数据库
特别强调与—initialize 不同 ,初始化的时候 使用参数
shell> bin/mysqld --initialize-insecure --user=mysql
则会生成一个无密码的root 账号。更详细的请移步 官方文档 
参考文档
MySQL 5.7 新特性详解-英文版 
MySQL 5.7 新特性详解-中文版  
请使用浏览器的分享功能分享到微信等