该
validate_password
插件现在支持拒绝与当前会话用户名匹配的密码的功能,无论是正向还是反向。为了启用对此功能的控制,插件公开了一个validate_password_check_user_name
系统变量。默认情况下,该变量是禁用的;默认值将在 MySQL 8.0 中更改为启用。有关详细信息,请参阅 密码验证插件选项和变量。
-
在mysql-test-run.pl中,并行测试的 worker 数量限制为 50,这在 CPU 超过 50 个的系统上会导致唯一线程 ID 耗尽。ID 耗尽问题已得到纠正,并且取消了 50 名工人的限制。感谢 Daniel Black 提供此更改所基于的补丁。此外,还进行了以下更改:
为了避免空闲工人,现在并行工人的数量限制为测试数量。
以前,如果
--parallel=auto
给出并且MTR_MAX_PARALLEL
未设置环境变量,则会对并行工作者的数量施加 8 的限制。此限制已取消。
(错误#22342399,错误#79585)
InnoDB: 一个新的动态配置选项,
innodb_deadlock_detect
可用于禁用死锁检测。在高并发系统上,当大量线程等待同一个锁时,死锁检测会导致速度减慢。innodb_lock_wait_timeout
有时,禁用死锁检测并依赖发生死锁时事务回滚的设置可能更有效 (漏洞#23477773)单元文件 ( ) 的 systemd 支持脚本
mysqld_pre_systemd
现在仅在其位置与模式 /var/log/mysql*.log 匹配时才协助创建错误日志文件。在其他情况下,错误日志目录必须是可写的,或者错误日志必须存在并且对于运行mysqld 进程的用户是可写的。此外,mysqld_pre_systemd
现在避免创建不安全的临时文件。(漏洞 #24516262)添加了CMake
WITH_LZ4
选项以控制在编译期间使用哪个 LZ4 库。默认WITH_LZ4
设置为bundled
,因此使用 MySQL 提供的库。设置WITH_LZ4
为system
使用操作系统中的 LZ4 库。(漏洞 #23607230)
InnoDB:
ALTER TABLE ... ENCRYPTION='Y', ALGORITHM=COPY
对驻留在系统表空间中的表 的(漏洞#24381804)InnoDB:
innodb_flush_method
在设置为 的 Fusion-io 磁盘上创建加密表O_DIRECT
导致致命错误。(漏洞 #24329079,漏洞 #82073)InnoDB: 删除并创建全文搜索表的操作引发了断言。(漏洞 #24315031)
InnoDB: 在删除索引表时访问全文搜索辅助表引发断言。(漏洞 #24009272)
InnoDB: 对具有索引列的表进行的在线 DDL 操作
BLOB
在记录表修改期间引发断言。(缺陷号 23760086)InnoDB: 在某些情况下,定位与给定指针对应的缓冲池块的代码返回了错误的块。感谢 Alexey Kopytov 提供的补丁。(错误#23631471,错误#79378)
InnoDB: 全局计数器 (
ut_rnd_ulint_counter
) 已更改为线程本地计数器,以使其在多核系统上可扩展。(漏洞 #22733635,漏洞 #80354)-
复制:选项 的添加
transaction-write-set-extraction=XXH64
使用来自 liblz4 的 xxHash 符号。虽然 xxHash 符号由 liblz4 导出,但头文件不是 API 的一部分,因此使用WITH_LZ4=system
. 该修复程序确保 xxHash 与 liblz4 分开构建,以便在使用系统库和捆绑的 LZ4 库时都可用。(缺陷 #82426,缺陷 #24399819)参考资料:另请参阅:错误 #23607230。
复制: mysqlbinlog --read-from-remote-server log1 log2正在打开一个新连接,
log2
但没有释放用于 的连接log1
。感谢 Laurynas Biveinis 的贡献。(缺陷 #81675,缺陷 #23540182)复制: MTR 二进制日志测试套件无法清理复制的文件。感谢 Daniel Black 的贡献。(缺陷 #80881,缺陷 #23016254)
复制: 使用
binlog_row_image=FULL
,在更新单个表时不必要地使用临时表。该修复确保单表更新遵循与多表更新相同的模式。(错误#79867,错误#22510353)Solaris: 客户端库无法使用该
Cstd
库在 Solaris 上构建。(漏洞 #24353920,漏洞 #82347)mysqld_safe试图读取
my.cnf
数据目录,尽管那不再是标准的选项文件位置。(漏洞#24482156)-
对于mysqld_safe,
--malloc-lib
now 的参数必须是目录/usr/lib
、/usr/lib64
、/usr/lib/i386-linux-gnu
或 之一/usr/lib/x86_64-linux-gnu
。此外,--mysqld
和--mysqld-version
选项仅在命令行中被接受,在选项文件中不被接受。(缺陷号 24464380)参考资料:另请参阅:Bug #24619033、Bug #82920。
可以编写以
.ini
或结尾的日志文件.cnf
,以后可以将其解析为选项文件。一般查询日志和慢查询日志不能再写入以.ini
或结尾的文件.cnf
。(缺陷号 24388753)通过利用
REPAIR TABLE
使用临时文件的方式可以提升权限。(漏洞#24388746)如果
basedir
系统变量是在服务器启动时从命令行或选项文件设置的,则该值未规范化(在 Windows 上,/
未替换为\
)。(缺陷 #23747899,缺陷 #82125)修改了 kevent 语句计时器子系统取消初始化以避免mysqld在 OS X 10.12 关机期间挂起。(漏洞 #23744004,漏洞 #82097)
对于
GRANT
应用了多个语句的帐户, mysqlpump可能无法将它们全部转储。(漏洞#23721446)MYSQL_ADD_PLUGIN
宏有拼写错误,导致 无法MYSQL_SERVER
定义。(漏洞 #23508762,漏洞 #81666)单独执行时不会导致表重建的就地
ALTER TABLE
操作在合并到单个语句中时可能会导致表重建。(缺陷 #23475211,缺陷 #81587)对于密钥环插件,数据访问层现在仅在必要时创建,而不是每次操作一次,这提高了密钥环性能。(缺陷号 23337926)
语句中的空白服务器名称会
CREATE SERVER
导致服务器退出而不是错误。(缺陷号 23295288)优化器未能检查面积计算的函数返回值,导致服务器退出。(缺陷号 23280059)
-
服务器可能无法释放分配给执行使用生成列的查询的内存。(漏洞 #23205454)
参考资料:此问题是 Bug #22392268 的回归。
触发器主体中包含多个语句的触发器的mysqlpump输出无法正确加载。(漏洞 #23072245)
满足以下条件的查询可能会返回与 MySQL 5.6 不同的结果: 1) 子查询出现在选择列表中;2) 子查询包含
WHERE
引用外部查询中的值的条件;3) 外部查询包含一个GROUP BY
需要创建临时表的查询。(漏洞 #23049975)被
validate_password
插件拒绝的密码由服务器以明文形式写入错误日志。(漏洞 #22922023)在作为联接一部分的派生表的选择列表中使用参数的准备好的语句可能会导致服务器退出。(错误#22392374,错误#24380263)
MEDIUMINT
在具有长整数值的操作中使用的列可能会导致缓冲区溢出。(漏洞#19984392)ER_NO_SUCH_TABLE
尝试执行CREATE TABLE ... SELECT
在子句中使用临时表FROM
并调用存储函数的准备好的语句时,可能会发生 虚假错误。如果在重新执行过程时在存储过程中使用该语句的非准备版本,则可能会出现相同的错误。(错误#16672723,错误#68972)EINTR
客户端库中的处理已得到修复,以便重试中断的读取和写入调用。以前,EINTR
被忽略了。(漏洞 #82019,漏洞 #23703570)