写在前面
一 安全性
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;
shell> bin/mysql_ssl_rsa_setup # MySQL 5.7.6 and up
推荐两篇延伸阅读,关于SSL 特性我相信绝大多数数据库都没有开启,姜承尧文章中的测试案例显示弱开启SSL 性能开销在25% 左右。大家在尝试新的特性的时候 ,根据自己的业务做评估。
1.5 使用更安全的初始化方式
逐步废弃mysql_install_db的安装方式使用 initialize代替(mysql_install_db <5.7.6<= mysqld —initialize) ,使用 initialize 参数初始化数据库有如下特性
a 只创建一个 root账号,并且生成一个临时的标记为过期密码
b 不创建其他账号
c 不创建test 数据库
特别强调与—initialize 不同 ,初始化的时候 使用参数
参考文档