大家好,又见面了,我是全栈君。
MySQL 5.7中添加了以下功能:
(1)在MySQL 8.0中,caching_sha2_password是默认的验证插件。为了使MySQL5.7能够使用使用caching_sha2_password进行身份验证连接到8.0服务器,MySQL 5.7客户端库和客户端程序从MySQL 5.7.23开始支持caching_sha2_password客户端身份验证插件。这提高了MySQL 5.7与MySQL 8.0和更高版本服务器的兼容性。请参见第6.4.1.5节“缓存SHA-2可插入认证”。
(2)服务器现在要求mysql.user表中的帐户行具有非空的列值并禁用具有空值的帐户。有关说明,请参见第2.11.3节“影响升级到MySQL 5.7的更改”。建议DBA使用mysql_old_password认证插件的帐户转换为使用mysql_native_password,因为已删除对mysql_old_password的支持。有关帐户升级说明,请参见第6.4.1.3节,“Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password Plugin”
(3)MySQL现在允许数据库管理员为自动密码过期建立策略:使用密码超过其允许生命周期的帐户连接到服务器的任何用户都必须更改密码。有关更多信息,请参见第6.2.11节“密码过期策略”。
(4)管理员可以锁定和解锁帐户,以便更好地控制谁可以登录。有关更多信息,请参见第6.3.15节“用户帐户锁定”。
(5)为了更容易支持安全连接,使用OpenSSL编译的MySQL服务器可以在启动时自动生成缺少的SSL和RSA证书和密钥文件。请参见第6.3.2.1节“使用MySQL创建SSL和RSA证书和密钥”。
所有服务器(无论是使用OpenSSL还是yaSSL编译),如果没有明确配置SSL,都会尝试在启动时自动启用SSL,如果他们在数据目录中找到必需的SSL文件。请参见第6.3.1节“配置MySQL以使用加密连接”。
此外,MySQL发行版包括一个mysql_ssl_rsa_setup实用程序,可以手动调用该实用程序来创建SSL和RSA密钥和证书文件。有关更多信息,请参见第4.4.5节“mysql_ssl_rsa_setup – 创建SSL / RSA文件”。
(6)使用mysqld –initialize安装的MySQL部署默认是安全的。以下更改已作为默认部署特征实现:
有关更多信息,请参见第2.10.1节“初始化数据目录”。
(7)MySQL企业版现在提供数据脱敏和反识别功能。数据脱敏通过用替换实际值来隐藏敏感信息。 MySQL企业数据脱敏和反识别功能可以使用多种方法脱敏现有数据,例如模糊处理(删除识别特征),格式化随机数据的生成以及数据替换或换算。有关更多信息,请参见第6.4.7节“MySQL企业数据数据脱敏和反识别功能”。
ONLY_FULL_GROUP_BY SQL模式的实现变得更加复杂,不再拒绝先前被拒绝的确定性查询。因此,此模式现在默认启用,以禁止仅包含不保证在组内唯一确定的表达式的非确定性查询。
ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE和NO_ZERO_IN_DATE SQL模式现已弃用,但默认情况下已启用。长期计划是将它们包含在严格的SQL模式中,并在未来的MySQL版本中将它们作为显式模式删除。请参阅MySQL 5.7中的SQL模式更改。
对默认SQL模式的更改会导致启用这些模式的默认sql_mode系统变量值:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER和NO_ENGINE_SUBSTITUTION。
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
只要VARCHAR列所需的长度字节数保持不变,就是可以in-place更改。对于0到255的VARCHAR值,需要一个长度字节来对值进行编码。对于256字节或更多的VARCHAR值,需要两个长度字节。因此,in-place ALTER TABLE仅支持将VARCHAR大小从0增加到255个字节,或者将VARCHAR大小从等于或大于256个字节的值增加。
In-place ALTER TABLE不支持将VARCHAR大小从小于256字节增加到等于或大于256字节的值。在这种情况下,所需长度字节数将从1更改为2,只有table copy(ALGORITHM = COPY)支持。
不支持使用in-place ALTER TABLE减小VARCHAR大小。减小VARCHAR大小需要table copy(ALGORITHM = COPY)。
有关更多信息,请参见第14.13.1节“在线DDL操作”。
在线DDL支持减少了表重建时间并允许并发DML,这有助于减少用户应用程序的停机时间。有关其他信息,请参见第14.13节“InnoDB and Online DDL”。
此增强功能更改了重做日志格式,要求在升级到MySQL 5.7.5或从MySQL 5.7.5降级之前彻底关闭MySQL。
从MySQL 5.7.9开始,mysql_upgrade会查找并尝试升级使用ha_partition处理程序创建的InnoDB分区表。同样在MySQL 5.7.9及更高版本中,您可以使用ALTER TABLE … UPGRADE PARTITIONING在mysql客户端中按名称升级此类表。
CREATE TABLESPACE `tablespace_name`
ADD DATAFILE ‘file_name.ibd’
[FILE_BLOCK_SIZE = n]
一般表空间可以在MySQL数据目录之外创建,能够保存多个表,并支持所有行格式的表。
使用CREATE TABLE tbl_name … TABLESPACE [=] tablespace_name或ALTER TABLE tbl_name TABLESPACE [=] tablespace_name语法将表添加到常规表空间。
有关更多信息,请参见第14.6.3.3节“InnoDB通用表空间”。
如果您使用InnoDB压缩表,请参见第2.11.3节“MySQL 5.7中的更改”以了解相关的升级含义。
MySQL 5.7.8还引入了许多用于处理JSON值的函数。这些功能包括这里列出的功能:
在MySQL 5.7.9及更高版本中,您可以使用column-> path作为JSON_EXTRACT(列,路径)的简写。这可以作为列的别名,只要在SQL语句中可以出现列标识符,包括WHERE,ORDER BY和GROUP BY子句。这包括SELECT,UPDATE,DELETE,CREATE TABLE和其他SQL语句。左侧必须是JSON列标识符(而不是别名)。右侧是引用的JSON路径表达式,它根据作为列值返回的JSON文档进行评估。
MySQL 5.7.22添加了以下JSON函数:
此函数也适用于可以解析为JSON值的字符串。
另请参见第12.17.6节“JSON实用程序函数”。
此函数还接受JSON文档的有效字符串表示形式。对于这样的值,JSON_STORAGE_SIZE()返回其转换为JSON文档后其二进制表示所使用的空间。对于包含JSON文档的字符串表示形式的变量,JSON_STORAGE_FREE()返回零。如果无法将其(非null)参数解析为有效的JSON文档,则任一函数都会产生错误;如果参数为NULL,则该函数为NULL。
有关更多信息和示例,请参见第12.17.6节“JSON实用程序函数”。
作为此工作的一部分,JSON_MERGE()函数已重命名为JSON_MERGE_PRESERVE()。JSON_MERGE()继续被认为是MySQL 5.7中JSON_MERGE_PRESERVE()的别名,但现在已被弃用,并且将在未来的MySQL版本中删除。
有关更多信息和示例,请参见第12.17.4节“修改JSON值的函数”。
有关 – >和JSON_EXTRACT()的更多信息,请参见第12.17.3节“搜索JSON值的函数”。有关MySQL 5.7中的JSON路径支持的信息,请参阅搜索和修改JSON值。另请参见索引生成的列以提供JSON列索引。
EXPLAIN [options] FOR CONNECTION connection_id;
有关更多信息,请参见第8.8.4节“获取命名连接的执行计划信息”。
此选项使用格式–rewrite-db =’dboldname-> dbnewname’。您可以通过多次指定选项来实现多个重写规则。
您可以使用SHOW SLAVE STATUS检查从属SQL和I / O线程的当前状态。
如果使用基于语句的复制和临时表,则STOP SLAVE语句后面的CHANGE MASTER TO语句可能会在slave服务器上留下临时表。作为这组改进的一部分,当使用基于语句的复制并且Slave_open_temp_tables保持大于0时,只要在STOP SLAVE之后发出CHANGE MASTER TO,就会发出警告。
有关更多信息,请参见第13.4.2.1节“更改主语法”和第16.3.7节“在故障转移期间切换Master”。
作为MySQL多源复制的一部分,添加了复制通道。复制通道使从库能够打开多个连接以进行复制,每个通道都是与主站的连接。请参见第16.2.3节“复制通道”。
除了在MySQL 5.7.6中添加的replication_group_members和replication_group_member_stats之外,其余所有这些表都添加在MySQL 5.7.2中。有关更多信息,请参见第25.12.11节“性能模式复制表”。
有关更多信息,请参见第13.4.3节“用于控制组复制的SQL语句”。
MySQL 5.7中不推荐使用以下功能,可能会在将来的系列中删除。在显示替代方案的地方,应更新应用程序以使用它们。
对于使用MySQL 5.7中已弃用的,在较高MySQL系列中删除的功能的应用程序,从MySQL 5.7主服务器复制到更高级别的从服务器时语句可能会失败,或者可能对主服务器和从服务器产生不同的影响。为避免此类问题,应修改使用5.7中不推荐使用的功能的应用程序以避免它们并尽可能使用替代方案。
不推荐使用已弃用的ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE和NO_ZERO_IN_DATE SQL模式,以便命名它们的语句不会产生错误,但将在MySQL的未来版本中删除。要对不存在这些模式名称的MySQL版本进行预先准备,应修改应用程序以不引用它们。请参阅MySQL 5.7中的SQL模式更改。
对于C API,mysql_options()的MYSQL_OPT_SSL_ENFORCE和MYSQL_OPT_SSL_VERIFY_SERVER_CERT选项对应于客户端–ssl和–ssl-verifyservercert选项,不推荐使用。使用MYSQL_OPT_SSL_MODE,选项值为SSL_MODE_REQUIRED或SSL_MODE_VERIFY_IDENTITY。
不建议为会话分配系统变量character_set_database和collation_database,分配会产生警告。会话变量将在MySQL的未来版本中变为只读,并且赋值将产生错误。仍然可以访问会话变量以确定默认数据库的数据库字符集和排序规则。
此更改不会影响使用LOAD DATA或SELECT … INTO OUTFILE执行的文本文件导入或导出操作,其中NULL继续由\ N表示。请参见第13.2.6节“LOAD DATA语法”。
仅从一个版本系列到另一个版本系列支持升级(例如,5.0到5.1或5.1到5.5),因此将旧的5.0数据库名称转换为当前版本的MySQL几乎不需要。作为解决方法,在升级到更新版本之前,将MySQL 5.0安装升级到MySQL 5.1。
因为libmysqld使用的API与libmysqlclient的API相当,所以远离libmysqld的迁移路径很简单:
以下项目已过时,已在MySQL 5.7中删除。在显示替代方案的地方,应更新应用程序以使用它们。
对于使用MySQL 5.7中删除的功能的MySQL 5.6应用程序,从MySQL 5.6主服务器复制到MySQL 5.7从服务器时,语句可能会失败,或者可能对主服务器和从服务器产生不同的影响。为避免此类问题,应修改使用MySQL 5.7中删除的功能的应用程序以避免它们并尽可能使用替代方案。
此外,删除了几个与DELAYED相关的选项或功能:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112110.html原文链接:https://javaforall.cn