yaSSL 已升级到版本 2.3.9。此升级解决了一个问题,即 yaSSL 仅处理密钥协议的零个或一个前导零的情况,而不是潜在的任何数字,这在极少数情况下可能导致使用 DHE 密码套件时连接失败。(缺陷号 22361038)
-
MySQL Commercial Server 的链接 OpenSSL 库已从版本 1.0.1p 更新到版本 1.0.1q。有关此版本中修复的问题的说明,请参阅 http://www.openssl.org/news/vulnerabilities.html。
此更改不影响 Oracle 生成的 MySQL Community 构建的 MySQL Server,它使用 yaSSL 库。(漏洞#22348181)
-
InnoDB: 一个新的
InnoDB
配置选项, 重建表的innodb_tmpdir
在线操作期间创建的临时文件配置一个单独的目录引入此选项是为了帮助避免由于在线操作ALTER TABLE
期间创建的大型临时文件而可能发生的 MySQL 临时目录溢出 可以使用 语句动态配置。ALTER TABLE
innodb_tmpdir
SET
重建表的联机
ALTER TABLE
操作还会 在与原始表相同的目录中创建一个中间表文件。该innodb_tmpdir
选项不适用于中间表文件。(漏洞 #19183565) Valgrind 函数签名
mysql-test/valgrind.supp
已针对 Valgrind 3.11 进行了升级。(缺陷号 22214867)
InnoDB:
InnoDB
具有较大 的较小innodb_stats_persistent_sample_pages
导致难以在缓冲池警告中找到空闲块。(缺陷号 22385442)InnoDB:以配置文件中 的空
innodb_data_home_dir
条目启动服务器导致InnoDB
在根目录中查找缓冲池文件,从而导致启动错误。(缺陷 #22016556,缺陷 #78831)InnoDB: 在高并发下运行的全文查询由于无效的内存访问导致服务器退出。(漏洞 #21922532)
InnoDB:设置 较大
innodb_sort_buffer_size
时,在空表上添加索引的速度比预期慢。(缺陷 #21762319,缺陷 #78262)复制: 当 DML 调用插入
AUTO_INCREMENT
列的触发器或存储函数时,该 DML 必须标记为不安全语句。如果表在 DML 语句之前的事务中被锁定(例如通过使用LOCK TABLES
),则 DML 语句未被标记为不安全语句。此修复可确保将此类 DML 语句正确标记为不安全。(漏洞 #17047208)复制: 作为 Bug #16290902 修复的一部分,将
DROP TEMPORARY TABLE IF EXISTS
查询写入二进制日志时,查询前面不再有USE `db`
语句。相反,查询使用完全限定的表名,例如DROP TEMPORARY TABLE IF EXISTS `db`.`t1`;
。这改变了replicate-rewrite-db
过滤规则的应用,因为它们仅适用于USE
语句中指定的默认数据库。这会导致从站在CREATE TEMPORARY TABLE
应用结果时失败。该修复确保在将DROP TEMPORARY TABLE IF EXISTS
查询写入二进制日志时,对默认数据库进行检查。如果存在,则查询写为USE default_db
在二进制日志中。如果不存在默认数据库,则使用限定的表名记录查询。(错误#77417,错误#21317739)复制: 如果为事务生成 GTID 失败,事务不会写入二进制日志,但仍会提交。虽然 GTID 耗尽的情况很少见,但如果确实发生,则会将错误作为同步阶段错误写入二进制日志。使用
binlog_error_action=ABORT_SERVER
,服务器会在出现此类错误时中止,从而避免数据不一致。当 时binlog_error_action=IGNORE_ERROR
,服务器在发生此类错误后继续进行二进制日志记录,可能会导致主从之间的数据不一致。该修复将错误更改为正确记录为刷新阶段错误。(错误#77393,错误#21276561)复制: 当使用
--gtid-mode=ON
,--enforce-gtid-consistency
, 和--binlog-format=row
时,如果在主服务器上执行具有多个DROP TEMPORARY TABLE
语句的用户定义函数,生成的二进制日志会导致从服务器出错。该修复程序确保存储的函数和触发器也被视为多语句事务,并且在--enforce-gtid-consistency
启用时,带有CREATE TEMPORARY TABLE
或DROP TEMPORARY TABLE
语句的函数会产生ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION
错误。(错误#77354,错误#21253415)复制:语句 中使用的存储过程局部变量
ALTER EVENT
未正确复制。CALL
这与语句未写入二进制日志这一事实有关 相反,在存储过程中执行的每个语句都是单独的二进制日志,除了修改语句字符串以便将存储过程局部变量的使用替换为NAME_CONST('spvar_name', 'spvar-value')
电话。DDL 语句(无论当前的二进制日志格式如何,始终以语句二进制日志模式进行二进制记录)也可以使用存储过程局部变量,并且冲突可能导致它们无法正确复制。该修复程序确保语句中使用的任何存储过程局部变量都替换NAME_CONST(...)
为 ,但当它是 DML 语句且二进制日志格式为ROW
. (错误#77288,错误#21229951)-
复制:
DROP TABLE
语句在写入二进制日志之前由服务器重新生成。如果表或数据库名称包含非常规字符,例如非拉丁字符,则重新生成的语句使用了错误的名称,从而破坏了复制。该修复确保在这种情况下重新生成的名称被正确地转换回原始字符集。同样在处理此错误期间,我们发现在极少数情况下,表或数据库名称包含 64 个字符时,服务器会抛出assert(M_TBLLEN < 128)
断言。断言已更正为小于或等于 128。(错误 #77249,错误 #21205695)参考资料:另请参阅:Bug #78036、Bug #22261585、Bug #21619371。
复制: 无论当前 格式
binlog_format
写入二进制日志STATEMENT
此类 DDL 可能来自基于事件的 SQL 语句,例如CREATE EVENT
orDROP EVENT
,或具有不安全函数的事务,例如sysdate()
. 当binlog_format=MIXED
并试图复制这样的 DDL 时,它没有被正确识别,因此没有被正确复制。(错误#71859,错误#19286708)-
Microsoft Windows: 添加了 Microsoft Visual Studio 2015 支持。更改包括使用本机(在 VS 2015 中添加)timespec 库(如果存在),重命名 lfind/lsearch 和 timezone/tzname 以避免重新定义问题,默认情况下将 TMPDIR 设置为“”,因为 P_tmpdir 不再存在,弃用 std::hash_map std::unordered_map,并添加了 Wix 工具集 3.10 支持。(缺陷号 21770366)
参考资料:另请参阅:Bug #21657078。
将 84 个 4 字节字符的标记插入全文索引会引发断言。最大令牌长度为 84 个字符,最多 252 个字节,这不包括 4 个字节的字符。最大字节长度现在是 336 字节。(缺陷 #22291765,缺陷 #79475)
如果客户端尝试使用不受支持的客户端字符集 (
ucs2
,utf16
,utf32
),则报告给客户端的错误消息对于 SSL 和非 SSL 连接是不同的。(漏洞 #22216715)如果存储过程具有声明为
TEXT
or 的变量,并且使用or 列BLOB
中的 SELECT ... INTO 语法将数据复制到该变量, 则可能会发生数据损坏或服务器退出。(错误#22203532、错误#22232332、错误#21941152)TEXT
BLOB
CREATE TEMPORARY TABLE .. SELECT
BIT
涉及导致列类型重新定义的列的语句可能会导致服务器退出或创建不正确的表。(漏洞 #21902059)对于
character_set_server=utf16le
,某些值ft_boolean_syntax
可能会导致服务器退出以进行全文搜索。(漏洞 #21631855)在
LOCK TABLES
生效时,尝试打开MERGE
由其表列表中的视图组成的临时表(不是列表中的最后一个表)导致服务器退出。(缺陷号 20691429)对于某些准备好的语句,优化器可以转换连接条件,以便它使用指向临时表字段的指针,该字段在初始执行后不再可用。随后的执行导致服务器退出。(漏洞#19941403)
-
重复执行
ALTER TABLE v1 CHECK PARTITION
准备好的语句,其中v1
是一个视图,导致服务器退出。此外,一些管理操作的输出,当它们在视图上尝试时,从 “损坏”变为“操作失败”。其中包括执行
ANALYZE TABLE
、 、和 操作的、OPTIMIZE TABLE
、 和REPAIR TABLE
和 语句。(漏洞 #19817021)ALTER TABLE
ANALYZE PARTITION
CHECK PARTITION
OPTIMIZE PARTITION
REPAIR PARTITION
Valgrind 在用于非对称加密的代码中检测到一些可能不安全的字符串函数使用。(漏洞 #19688135)
MYSQL_OPT_READ_TIMEOUT
SSL 连接忽略通过将选项传递给mysql_options()
C API 函数 所做的任何更改 。(漏洞 #17618162)Solaris 软件包未能注意到 MySQL 客户端库对该
libstlport
库的依赖性。(错误#79778,错误#22504264)如果配置文件包含多行,则 使用 systemd 启动mysqld会失败 。
datadir
现在使用最后datadir
一行。(错误#79613,错误#22361702)如果服务器以 启动
--thread-handling=no-threads
,则不会为客户端连接创建前台线程。Performance Schema 没有考虑到没有前台线程查询session_connect_attrs
表的可能性,导致引发断言。(错误#78292,错误#21765843)ALTER TABLE ... CONVERT TO CHARACTER SET
如果表仅包含数字数据类型,则使用该INPLACE
算法的操作将无效。此外,此类操作无法清理其临时.frm
文件。(错误#77554,错误#21345391)繁重
SHOW PROCESSLIST
或SELECT ... FROM INFORMATION_SCHEMA.PROCESSLIST
活动可能导致服务器接受多个max_connections
连接。(错误#75155,错误#20201006)当与
libmysqld
嵌入式服务器一起使用时,mysql_stmt_execute()
C API 函数malformed communication packet
会因错误而失败,即使对于简单的准备语句也是如此。(错误#70664,错误#17883203)