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