让我们继续上一周的内容,讨论MySQL 5.7中的新特性,我们将把注意力集中于新的安全方面的特性。首先,新版本中取消了mysql_old_password这个认证插件。其实这个插件从版本4.x开始就已经被标注为过期了,但直到5.7.5版本中才被正式移除。从5.7.6开始,你必须显式地在mysql.user表中声明使用mysql_native_password方式进行认证。
新版本的MySQL开始支持密码过期策略了。如果系统管理员需要临时关闭某个用户或应用程序的访问权限,可以简单地将其帐号锁定即可。
和其它许多产品一样,MySQL的发展趋势是提供“默认的安全性”。这就意味着如果你使用“mysqld –initialize”方式安装MySQL,安装程序就会自动为管理员帐号创建一个随机的密码。该密码记录在错误日志中,并且在管理员首次登录时必须修改密码。使用这种安装选项不会生成任何匿名帐号,也不会创建测试数据库。
使用GRANT语句自动创建用户帐号的方式已经被标注为过期特性,同样,使用GRANT语言修改帐号属性,例如认证或SSL设置的方式也成为过期特性。
MySQL的事务型存储引擎现在默认开启严格模式。虽然仍然可以通过INSERT IGNORE或UPDATE IGNORE等语句覆盖严格模式,但对于多数常见的访问来说,这种默认配置应该能够大大降低无记载数据损坏的发生次数。
此外,在ALTER TABLE语句中不再支持IGNORE语法了。
ERROR_FOR_DIVISION_BY_ZERO、NO_ZERO_DATE和 NO_ZERO_IN_DATE等SQL模式不再作为单独的配置存在,它们的功能已经集成在严格模式中了。
对于所有的存储引擎来说,都可以对索引进行重命名,而不会产生表复制操作。
包含GROUP BY子句的语句将不会隐式地根据该子句的内容对数据进行排序了,对于那些依赖于隐式排序特性的应用程序来说,这个变更可能会造成某些问题。
MySQL现在支持计算列了,这一特性被称为“ 生成列 ”。语法本身有一点古怪的地方,因为它无法从表达式中推断出数据类型,不过它还是支持你所期待的各种特性,例如可以选择将计算值保存在表中,也可以选择在读取的时候进行计算。被保存的计算列能够添加索引。
HANDLER 能够允许客户端对某张表或索引进行直接访问,现在这一特性可以在分区表中使用了。
查看英文原文: More Enhancements for MySQL 5.7 including Computed Columns