Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.35 的变化(2016-12-12,全面上市)

MySQL 5.6.35 的变化(2016-12-12,全面上市)

连接管理说明

  • MySQL 服务器现在包括一个插件库,使管理员能够在一定数量的连续连接尝试失败后增加服务器对客户端的响应延迟。此功能提供了一种威慑力,可以减缓试图访问 MySQL 用户帐户的暴力攻击。有关详细信息,请参阅 连接控制插件

MySQL 企业笔记

  • MySQL 企业版的企业加密现在使服务器管理员能够通过设置环境变量来限制最大密钥长度。这些可用于通过将非常长的密钥长度传递给密钥生成操作来防止客户端使用过多的 CPU 资源。有关详细信息,请参阅MySQL Enterprise 加密用法和示例。(漏洞#19687742)

安全说明

  • 不兼容的更改: 这些更改是对mysqld_safe进行的:

    • mysqld_safe中 不安全地使用rmchown 可能会导致特权升级。 chown now 只能在目标目录为. 一个不兼容的变化是,如果 Unix 套接字文件的目录丢失,则不再创建它;相反,会发生错误。由于这些更改, /bin/bash需要 在 Solaris 上运行mysqld_safe 。/bin/sh仍在其他 Unix/Linux 平台上使用。 /var/log

    • --ledir选项现在仅在命令行中被接受,而不是在选项文件中。

    • mysqld_safe忽略当前工作目录。

    其他相关变化:

    • 调用 mysqld_safe的初始化脚本显式传递 --basedir

    • 仅当基本目录为/var/log或 时,初始化脚本才会创建错误日志文件/var/lib

    • 删除了 SLES 未使用的 systemd 文件。

    (错误#24483092、错误#25088048、错误#25378439、错误#25378565)

    参考资料:另请参阅:Bug #24464380、Bug #24388753、Bug #24619033、Bug #82920。

  • OpenSSL 将于 2016 年 12 月结束对版本 1.0.1 的支持;请参阅 https://www.openssl.org/policies/releasestrat.html。因此,MySQL Commercial Server 构建现在使用 1.0.2 版而不是 1.0.1 版,并且 MySQL Commercial Server 的链接 OpenSSL 库已从 1.0.1 版更新到 1.0.2j 版。有关此版本中修复的问题的说明,请参阅 https://www.openssl.org/news/vulnerabilities.html

    此更改不影响 Oracle 生成的 MySQL Community 构建的 MySQL Server,它使用 yaSSL 库。

添加或更改的功能

  • InnoDB: 默认情况下,InnoDB在计算统计时读取未提交的数据。在从表中删除行的未提交事务的情况下, InnoDB在计算行估计和索引统计信息时排除被删除标记的记录,这可能导致同时使用表操作的其他事务的非最佳执行计划以外的事务隔离级别 READ UNCOMMITTED。为了避免这种情况, innodb_stats_include_delete_marked可以启用一个新的配置选项,以确保InnoDB在计算持久优化器统计信息时包括删除标记的记录。(缺陷号 23333990)

  • 单元测试现在使用 Google Mock 1.8。(缺陷 #24572381,缺陷 #82823)

修正错误

  • 不兼容的更改:LOAD DATA由于复制不兼容 ,MySQL 5.6.32 中用于处理多字节字符集的更改

    参考资料:另请参阅:错误 #23080148。

  • InnoDB: GCCmach_parse_compressed函数应该根据第一个字节的值加载一到五个字节。由于 GCC 错误,GCC 5 和 6 发出代码以在检查第一个字节值之前加载四个字节(GCC Bug #77673)。解决方法可防止此行为。感谢 Laurynas Biveinis 提供补丁。(漏洞 #24707869,漏洞 #83073)

  • InnoDB: 由于一个glibc错误,短暂的分离线程可能会在调用者从 返回之前退出 pthread_create(),从而导致服务器退出。感谢 Laurynas Biveinis 提供补丁。(缺陷 #24605956,缺陷 #82886)

  • InnoDB:GEN_CLUST_INDEX由于使用无效键名调用的错误, 在仅生成聚集索引 () 的表上进行表重建操作期间出现错误(漏洞 #24444831)

  • InnoDB: 在没有显式定义主键的表上, 列上定义了唯一键时InnoDB没有替换隐式聚集索引((缺陷号 24397406)GEN_CLUST_INDEXNOT NULL

  • InnoDB: InnoDB无法释放全文优化器线程使用的内存。(漏洞 #24331265)

  • InnoDB: SHOW ENGINE INNODB STATUS输出显示 空闲线程处于“清理状态。线程状态信息在语句执行后未重置。(缺陷 #21974225,缺陷 #78777)

  • InnoDB: 服务器重启后,并发 INSERT操作自增主键表出现重复录入错误。当前自动增量值在修改设置后没有 auto_increment_increment改变 auto_increment_offset。(缺陷 #20989615,缺陷 #76872)

  • 复制:使用基于行的复制 () 时,不会更新仅存在于从服务器上的 具有特殊DEFAULT列(例如 。(缺陷号 22916743)DEFAULT CURRENT_TIMESTAMPbinlog_format=ROW

  • 复制: 当服务器处于提交阶段时启用半同步复制可能会导致主服务器意外停止。这与 Bug# 75570 的补丁有关。(Bug #22202516)

  • 复制: 针对 Bug #81657 的修复未正确合并到 MySQL 8.0 中。感谢 Laurynas Biveinis 提醒我们。(缺陷 #83124,缺陷 #24715790)

  • 一些 Linux 启动脚本没有 datadir正确处理设置。(漏洞 #25159791)

  • CREATE TABLE如果或被明确指定为表或分区选项, 现在需要 FILE特权。如果任一选项被明确指定为分区选项,则需要 特权(如果指定为表选项,它将忽略它们)。(漏洞 #25092566)DATA DIRECTORYINDEX DIRECTORYALTER TABLEFILE

  • OEL RPM 包现在可以更好地检测哪些平台具有多库支持(可以安装 32 位和 64 位库)。感谢 Alexey Kopytov 提供的补丁。(漏洞 #24925181,漏洞 #83457)

  • 在模式下使用 Microsoft Visual Studio 2015 版本 14.0.25420.1 编译 MySQLrelwithdebinfo失败并出现链接错误。(漏洞 #24748505)

  • 期间发生的警告CREATE TABLE ... SELECT可能会导致服务器退出。(漏洞 #24595992)

  • 对于 FreeBSD 上的分段错误,服务器没有生成堆栈跟踪。(错误#24566529、错误#23575445、错误#81827)

  • .mylogin.cnf选项文件旨在供客户端程序使用,但服务器也在读取它。服务器不再读取它。(漏洞 #24557925)

  • 如果mysqladmin shutdown在确定服务器进程 ID 文件时遇到错误,它会显示一条错误消息,但没有明确指出该错误是非致命错误。它现在表示执行继续。(缺陷号 24496214)

  • 用于ZEROFILL列的数据结构可能会遇到内存损坏,最终导致服务器退出。(漏洞 #24489302)

  • 使用非常长的子分区名称可能会导致服务器退出。现在,大于 64 个字符的分区或子分区名称会产生 ER_TOO_LONG_IDENT错误。(漏洞 #24400628,漏洞 #82429)

  • 在 Solaris 上,gettimeofday()可能返回无效值并导致服务器关闭。(缺陷号 23499695)

  • 导致元组大于 max_join_size可能导致服务器退出的联合查询。(漏洞 #23303485)

  • 优化器可以选择 ref访问二级索引而不是range 访问主键,即使成本更高。(漏洞 #23259872,漏洞 #81341)

  • 对于一些深度嵌套的表达式,优化器未能检测到堆栈溢出,导致服务器退出。(缺陷号 23135667)

  • 使服务器脱机时,性能模式中的竞争条件可能导致服务器退出。(漏洞 #22551677)

  • Performance Schema events_statements_summary_by_digest 表可以包含相同语句摘要和模式组合的多行,而不是预期的单个(唯一)行。(缺陷 #22320066,缺陷 #79533)

  • 对于调试版本:向POINT NOT NULL列添加唯一索引会触发警告,并且该键未提升为主键。NULL在同一个表中的不同非列上创建唯一索引然后引发断言。(错误#19635706,错误#24469860)

  • 在启用 AddressSanitizer (ASAN) 的情况下使用 Clang 3.5 或更高版本进行编译会导致该gen_lex_hash实用程序在 Clang LeakSanitizer 内存泄漏检查失败时中止。(错误#76351、错误#20720615、错误#22558597、错误#80014)

  • 在有大量并发服务器连接的情况下,错误计算 qsort 操作的内存需求可能会导致堆栈溢出错误。(错误#73979、错误#19678930、错误#23224078)