Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.30 的变化(2016-04-11,正式发布)

MySQL 5.6.30 的变化(2016-04-11,正式发布)

安全说明

  • 用于 MySQL Commercial Server 的链接 OpenSSL 库已更新至版本 1.0.1s。有关此版本中修复的问题的说明,请参阅 http://www.openssl.org/news/vulnerabilities.html

    此更改不影响 Oracle 生成的 MySQL Community 构建的 MySQL Server,它使用 yaSSL 库。(错误#22685885,错误#22923458)

  • MySQL 客户端程序现在支持一个 --ssl-mode选项,使您能够指定与服务器的连接的安全状态。如果未指定该选项,则默认值为 DISABLED(建立未加密的连接)。--ssl-mode=REQUIRED 可以指定需要加密连接,或者如果无法获得加密连接则失败。

    这些客户端支持 --ssl-modemysqlmysqladminmysqlcheckmysqldumpmysqlimportmysqlshowmysqlpumpmysqlslapmysqltestmysql_upgrade

    有关详细信息,请参阅 加密连接的命令选项

    笔记

    在 MySQL 5.7 及更高版本中,C 客户端库为要求加密连接提供本机支持:调用 mysql_options()C API 函数,传递MYSQL_OPT_SSL_MODE 值为SSL_MODE_REQUIRED. 在 MySQL 8.0 中,客户端库不提供此类支持,因为这样做会破坏与该系列中先前库版本的二进制兼容性。需要加密连接的客户端必须自己实现逻辑。

    为了在 MySQL 8.0 中要求加密连接,标准的 MySQL 客户端程序使用这种技术:如果 --ssl-mode=REQUIRED指定,客户端程序打开 SSL,连接到服务器,并检查生成的连接是否加密。如果不是,则客户端会出错并退出。必须能够要求加密连接的第三方应用程序可以使用相同的技术。有关详细信息,请参阅 mysql_ssl_set()

修正错误

  • 创新数据库;分区:OPTIMIZE TABLE重建分区 时InnoDB,将生成的分区表空间文件(*.ibd文件)放置在默认数据目录中,而不是使用该DATA DIRECTORY选项指定的目录。(错误#75112,错误#20160327)

  • InnoDB:在多个连接上 运行REPLACE操作导致挂起。(缺陷 #22530768,缺陷 #79185)

  • InnoDB:InnoDB MySQL 在同步 全文索引缓存 时停止(错误#22516559、错误#16510576、错误#73816)

  • InnoDB: 操作CREATE TABLE ... DATA DIRECTORY创建表失败而innodb_flush_method设置为O_DIRECT。(缺陷 #22180006,缺陷 #79200)

    参考:这个问题是 Bug #21113036 的回归。

  • InnoDB:innodb_open_files设置可能超过打开的文件限制。(漏洞 #22111472)

  • 复制: 发出STOP SLAVE导致从服务器读取数据包的虚假消息写入错误日志期间丢失与 MySQL 服务器的连接。通过此修复,当与主站的连接丢失时,将abort_slave检查标志并仅在未设置标志时打印错误消息。(缺陷 #22305605,缺陷 #79504)

    参考资料:另请参阅:Bug #12977988、Bug #22290309。

  • 复制: 当一个多线程slave因错误停止时,同样的错误信息被打印了3次。现在,SQL 线程的 kill acceptance 状态被保存下来,并且只打印一次。(缺陷 #21198611,缺陷 #77237)

  • 复制: mysqlbinlog --verbose将BINARYVARBINARY数据显示 为普通字符串,导致数据中的任何单引号(')或反斜杠(\)被打印出来,这让用户感到困惑,并且在反斜杠的情况下,导致跳过下一个字符。此修复使mysqlbinlog打印字符的十六进制值(单引号为 \x27 ” ,反斜杠为\x5c)。(缺陷号 20836250)

  • 复制:当变量 设置为时 测试用例main.merge失败, 因为服务器试图在子表打开之前获取用于创建表的信息。通过此修复,服务器将跳过获取表中情况的信息。(缺陷 #20574550,缺陷 #75976)binlog_formatROW,

  • 复制: 如果对主服务器的查询产生错误并且部分结果被写入二进制日志,例如由于 DROP TABLE IF EXISTS应用于多个表的语句会破坏外键约束,当配置了复制过滤器的从服务器遇到查询时,它可以被错误地二进制记录。这导致了错误,例如:

    Last_SQL_Error:查询在主从上导致了不同的错误。master 上的错误:消息(格式)='无法删除或更新父行:外键约束失败'错误代码=1217;从站错误:实际消息='无错误',错误代码=0。默认数据库:'db1'。Query: 'DROP TABLE IF EXISTS `table1` /* 由服务器生成 */'

    此错误需要两个修复程序。

    • 如果DROP TABLE用于删除单个表的语句失败,为避免导致此错误的部分结果,查询不会写入二进制日志。如果DROP TABLE用于删除表列表的语句失败,则它生成的任何部分结果都会写入二进制日志并显示错误。

    • 当从站接收到按预期生成错误的查询但由于复制过滤器而被跳过时,从站错误地检查了错误。错误 #76493 的修复确保不会发生这种来自主站的预期错误与来自从站的实际错误的比较。

    (错误#77684,错误#21435502)

    参考资料:另请参阅:Bug #20797764、Bug #76493。

  • 客户端握手处理期间可能会发生整数溢出,从而导致服务器退出。(漏洞 #22722946)

  • 默认情况下,RHEL6 或更早版本的 System-V 初始化脚本无法启用该mysqld服务。(漏洞 #22600974)

  • ExtractValue()找不到提供的表达式的匹配项时,它返回 NULL而不是预期的空字符串。

    此问题仅影响 MySQL 5.6.28 和 5.6.29。(漏洞 #22552615)

  • X509 证书中不正确的主机名检查可能会导致中间人攻击。(错误#22295186,错误#22738607)

  • 布尔模式全文搜索导致分段错误。(漏洞 #22176795)

  • 在杀死访问它的连接的同时选择和刷新 FEDERATED表可能会导致服务器退出。(漏洞 #21918190)

  • GRANT PROXY在更改系统表的定义后 执行语句mysql.user可能会导致服务器退出。(缺陷号 21699037)

  • 某些错误消息包含生成它们的 SQL 语句的一部分,可能会暴露数据。(漏洞 #21682356)

  • 尽管可以使用前缀创建非#sql临时表,但性能模式假定使用此前缀命名的表是临时的,可以忽略。Performance Schema 现在使用名称以外的表属性来标识临时表。(错误#21105475、错误#22532368、错误#79934)

  • 插件执行的帐户过滤audit_log 错误地使用了 USER()函数命名的帐户,而不是 CURRENT_USER()函数(后者是用于身份验证的帐户)。(错误#19509471、错误#22454245、错误#77553)

  • NULL 对参数到准备好的语句的 字符集转换操作可能会导致服务器退出。(漏洞 #18823979)

  • 没有为具有相等条件的查询选择松散索引扫描。(漏洞 #18109609)

  • 如果与 5.7 数据目录一起使用,则 MySQL 5.6 服务器在启动期间退出,因为 mysql.plugin表 的 5.7 中的更改MyISAMInnoDB. 在这种情况下,现在会发生安全关机。(错误#79290,错误#22216779)

  • 对于导致违反约束的操作, INSERT在 使用关键字时会报告错误而不是警告 。(缺陷 #78853,缺陷 #22037930)UPDATEFOREIGN KEYIGNORE

    参考资料:另请参阅:Bug #23135731。

  • 对于某些查询,当范围扫描的成本相同或更低时,会在范围扫描上选择索引合并访问计划。(错误#77209,错误#21178196)

  • 当内部字符串操作生成NULL指针而不是空字符串时,某些查询可能会引发断言。(错误#74500、错误#19875294、错误#13358486、错误#79988、错误#22551116)

  • EXPLAINfor SELECT ... FOR UPDATE语句获取锁。(错误#72858,错误#18899860)

  • Processlist 状态信息未正确更新, LOAD DATA并且可能显示与 不同的状态executing。(缺陷 #69375,缺陷 #16912362)