天天看点

【MySQL】5.7新特性之一

写在前面

一 安全性

   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 不同 ,初始化的时候 使用参数

参考文档