MySQL企业审计现在支持审计日志文件的压缩和加密。加密基于用户定义的密码。要使用这个特性,必须启用MySQL密匙环,因为审计日志记录使用它来存储密码。MySQL企业审计现在也支持JSON格式的日志,除了现有的XML格式。对于JSON格式,可以使用提供运行时日志读取功能的函数。有关其他信息,请参见MySQL企业审计.
请注意与以前的MySQL版本相比,日志文件名的解释
audit_log_file
系统变量值)已经改变,审计日志插件初始化和终止时的日志文件重命名行为也发生了改变。看到审计日志文件命名约定.
对于RHEL、SLES和Fedora rpm,用于调试版本的默认插件目录已更改为
/usr/lib64/mysql/plugin
来/usr/lib64/mysql/plugin/debug
.(Bug #27072155, Bug #88363)MySQL企业审计和MySQL企业防火墙的安装脚本现在在
mysql
系统数据库如下InnoDB
而不是MyISAM
表。(Bug #26323351, Bug #26906601)内存映射事务协调器的8KB硬编码内存页面大小对于诸如ARM64和PowerPC等页面大小大得多的平台来说太小了。服务器现在调用一个系统调用来获取当前平台的页面大小,而不是使用硬编码的值。的一个结果
——log-tc-size
选项是,现在最小值和默认值是页面大小的6倍。另外,该值必须是页面大小的倍数。感谢Alexey Kopytov的补丁。(Bug #23014086, Bug #80818, Bug #26931470, Bug #87995)
InnoDB:的
innodb_undo_tablespaces
configuration选项已弃用,将在未来的MySQL版本中删除。
MySQL现在支持底层密匙环密匙库之间的密匙迁移,允许dba将MySQL安装从一个密匙环插件切换到另一个。看到在密钥环密钥库之间迁移密钥.
MySQL企业版现在包括一个密匙环插件,
keyring_encrypted_file
,这与keyring_file
插件中使用本地数据文件进行密钥存储,但也根据用户定义的密码对文件进行加密。看到使用keyring_encrypted_file基于加密文件的Keyring插件.
性能架构
setup_timer
表已弃用,将在MySQL 8.0中删除蜱虫
排在performance_timers
表格(错误# 18296337)
控件指示的组搜索属性的处理
authentication_ldap_sasl_group_search_attr
而且authentication_ldap_simple_group_search_attr
系统变量更加灵活。如果组搜索属性为isMemberOf
, LDAP认证直接检索用户属性isMemberOf
为它赋值并将其分配为组信息。如果组搜索属性不是isMemberOf
, LDAP身份验证搜索用户所在的所有组。(后者是默认行为。)这种行为基于LDAP组信息的两种存储方式:1)组条目可以有一个名为的属性memberUid
或成员
具有用户名的值;2)一个用户条目可以有一个名为的属性isMemberOf
使用组名的值。(错误# 26317645)LDAP身份验证插件现在允许提供用户DN信息的身份验证字符串以a开头
+
的性格。如果没有此字符,认证字符串值将被视为没有修改的值,就像以前一样。如果认证字符串以+
,该插件从帐户用户名构造完整的用户DN值cn
属性值,以及身份验证字符串(带有+
删除)。方法中给定的方式存储身份验证字符串mysql.user
系统表,在认证前动态构造完整的用户DN。此帐户身份验证字符串没有
+
因此,它被视为完整的用户DN:CREATE USER 'admin' IDENTIFIED WITH authentication_ldap_simple BY "cn=admin,ou=People,dc=example,dc=com";
此帐户身份验证字符串确实具有
+
所以它只是作为完整用户DN的一部分:CREATE USER 'accounting' IDENTIFIED WITH authentication_ldap_simple BY "+ou=People,dc=example,dc=com";
在本例中,完整的用户DN使用
会计
随着cn
属性和身份验证字符串一起生成“cn =会计,ou =人,dc =示例中,dc = com”
.(错误# 26147775)对于LDAP身份验证插件,组搜索属性是固定的,不可配置。两个新的系统变量现在可以使用自定义组过滤器:
authentication_ldap_sasl_group_search_filter
而且authentication_ldap_simple_group_search_filter
.(错误# 26091340)
不兼容的更改:密码现在被限制为最多256个字符
sha256_password
认证插件,并用于密码()
函数的时候old_passwords = 2
.此外,密码哈希轮的数量是有上限的,以限制所使用的CPU时间。(Bug #27099029, Bug #27194270)MySQL商业服务器的链接OpenSSL库已更新到1.0.2n版本。新OpenSSL版本中修复的问题描述在http://www.openssl.org/news/vulnerabilities.html.
此更改不影响oracle生产的MySQL服务器的MySQL社区构建,它使用的是yaSSL库。(Bug #27212666, Bug #27236394)
10bet官方网站MySQL测试套件的文档现在使用Doxygen在MySQL源代码树中维护(参见MySQL服务器Doxygen文档,可在https://dev.10bet靠谱mysql.com/doc/index-other.html)。以前从旧的测试套件手册生成的相关Unix手册页不再更新,而且已经过时。因此,它们不再包含在MySQL发行版中。(错误# 27021754)
MySQL测试套件现在包含
CRC32 ()
测试。感谢丹尼尔·布莱克提供的补丁。(Bug #26495791, Bug #87136)
复制:属性,现在可以将主机名指定为组复制连接的白名单的一部分
group_replication_ip_whitelist
系统变量。主机名支持CIDR符号。不支持解析为IPv6地址的主机名。对于主机名,只有在另一个服务器发出连接请求时才进行名称解析。不能解析的主机名将不被考虑用于白名单验证,并将一条警告消息写入错误日志。FCrDNS (Forward-confirmed reverse DNS)验证是对解析后的主机名进行验证。
警告主机名本身就不如白名单中的IP地址安全。FCrDNS验证提供了良好的保护级别,但可能会受到某些类型的攻击。只有在严格需要时才在白名单中指定主机名,并确保用于名称解析的所有组件(如DNS服务器)都在您的控制之下。您还可以使用hosts文件在本地实现名称解析,以避免使用外部组件。
复制:的
group_replication_allow_local_disjoint_gtids_join
system变量已弃用,计划在未来的MySQL版本中删除。的
-DWITH_ASAN_SCOPE
CMake选项启用AddressSanitizer-fsanitize-address-use-after-scope
瞄准镜后检测使用的Clang标志。默认是关闭的。要使用这个选项,-DWITH_ASAN
也必须启用。(错误# 27095089)
重要的变化;分区:在启动MySQL Server时,检查使用通用分区处理程序的表可能会导致几分钟的延迟。为了防止这种情况发生
——disable-partition-engine-check
选项现在默认启用。(Bug #85830, Bug #25846957)性能;JSON:创建JSON字符串的表示现在针对最常见的情况进行了优化——要处理的字符串不包含需要转义的特殊字符——扫描字符串中的第一个特殊字符,并复制不需要单独转义的每个字符序列
memcpy ()
调用,而不是依次检查每个字符以确定它是否需要转义,如果需要则转义,然后逐个复制它,就像前面所做的那样。此修复程序还纠正了未能转义控制字符的错误
\ u001f
,或单位分隔符。(Bug #86898, Bug #26388690, Bug #87722, Bug #26780307)参考文献:参见Bug #25977595。
InnoDB:由于锁类型设置不正确,来自分区表上不同客户端的多次更新导致了意外的锁等待超时。(Bug #26731025, Bug #87619)
InnoDB:一个
ALTER TABLE
该操作导致服务器停止。(错误# 26492721)InnoDB:的
innodb_table_stats
重命名分区表时,未使用新的分区名称更新数据字典表。(Bug #26390658, Bug #86927)InnoDB:一个
刷新表
操作未能删除已中止的索引。在从缓存中删除表时,在检查已中止的索引之前会删除群集索引。(Bug #26256456, Bug #86607)InnoDB:迭代处理外来级联操作的方法导致了过多的内存使用。(Bug #26191879, Bug #86573)
这个问题是一个Bug #16244691的回归。
InnoDB:一个
插入
对具有空间索引的表的操作会由于锁冲突检查期间发生的失败而引发断言。(错误# 25729649)InnoDB:当历史记录列表的长度超过2000000时,应该只出现在MySQL调试版本中的警告被打印到错误日志中。(Bug #24296076, Bug #82213)
InnoDB:试图将缓冲池大小减少到小于缓冲池块大小时,没有报告警告。(错误# 23590280)
InnoDB:一个”键列错误”添加错误是为了解决不支持的索引创建场景。(错误# 22486025)
InnoDB:对使用二进制排序的索引列的全文搜索不返回区分大小写的匹配。(Bug #21625016, Bug #78048)
包装:当尝试使用MySQL Yum存储库在Fedora 27上安装MySQL Server时,由于与本机冲突,安装失败
mariadb-connector-c-devel
包中。有了这个修复,适当的”废止”已为该和其他原生包添加。(错误# 26963839)复制:修复Bug #26117735 (MySQL Bug #86288)在运行时可能导致调试断言mysqlbinlog与
——read-from-remote-server
选项和——rewrite-db
选项,这取决于重写规则中指定的数据库名称。这个问题现在已经得到了纠正。(错误# 26878022)复制:使用yaSSL编译MySQL,并使用半同步复制,确认包的错误处理可能会导致死锁。yaSSL可以同时读取多个确认包,但是半同步复制的接收线程只处理轮询后看到的第一个确认包。现在,接收线程处理缓冲区中出现的所有确认包。(错误# 26865538)
复制:在使用半同步复制时,如果
重置的主人
是在活动事务等待从服务器的确认时发出的,则Rpl_semi_sync_master_wait_sessions
等待完成后,服务器状态变量不正确。(错误# 26748533)复制:
XA回滚
由于给出了错误的事务ID而失败的语句,可以用正确的事务ID记录在二进制日志中,因此可以由复制从端操作。现在在执行二进制日志记录之前对错误情况进行检查,但检查失败了XA回滚
语句不记录日志。(Bug #26618925, Bug #87393)复制:半同步复制的接收线程无法从使用主/从协议压缩的从端接收确认(
slave_compressed_protocol =对
).接收线程现在正确处理压缩的确认。(Bug #26027024, Bug #86230)复制:在复制从端上
XA_STATE
字段events_transactions_current
, XA事务的状态被错误地报告为承诺
而不是准备
后XA准备
语句已应用于从服务器。(错误# 25940184)复制:在多源复制拓扑中,当
binlog_rows_query_log_events
在主通道上启用,并且在从通道上跳过已经从另一个通道应用的语句。在这种情况下,的实例Rows_query
没有删除存储在从服务器上的日志事件。日志事件实例现在被清理,内存被释放。感谢Vlad Lesin对补丁的贡献。(Bug #25695434, Bug #85371, Bug #85034)复制:在基于gtid的复制中修复了内存泄漏。在为跳过或忽略的事件更新存储库表之后,没有释放内存。(Bug #25656123, Bug #85251)
复制:当多线程从线程上的工作线程未能应用后一个事务所依赖的事务时,协调线程可以在被通知问题之前开始调度依赖事务。如果一个
停止奴隶
请求在此情况下发出,将导致在调试版本中引发断言。(错误# 25585436)复制:当
group_replication_enforce_update_everywhere_checks =对
组复制插件检查是否有外键级联,并禁止对这样的表进行更新。然而设置为空
没有检查操作,这可能导致数据不一致。现在,当group_replication_enforce_update_everywhere_checks =对
,子表上的操作将被阻塞设置为空
选择配置。(错误# 25404162)复制:在Windows上,由组复制生成的错误现在包含详细的错误消息,而不仅仅是错误编号。(错误# 24918678)
复制:在使用基于语句的复制时,如果
更新
或删除
语句在以。结尾的XA事务中使用Xa提交一个阶段
,且该语句不影响任何行,则会发生复制错误。一个XA结束
语句没有写入二进制日志,因此从服务器识别XA事务在提交请求时仍然处于活动状态。所需的XA结束
语句现在被写入,即使事务不影响任何行。(Bug #24812958, Bug #83295)复制:属于一个组的所有服务器必须具有惟一的uuid
server_uuid
,但是Group Replication并没有强制执行这一点,因此可以添加具有重复uuid的成员。(Bug #88452, Bug #27105803)复制:在作为加入组的一部分的分布式恢复过程中,当应用程序发出信号说它已经应用了所有事务时,它也在盲目地搜索部分事务。这是为了避免未来的应用程序错误,如果应用程序在这里停止,就会发生错误。然而,这种搜索和删除只适用于应用程序停止的情况。在执行完成后,不应该这样做,否则它会破坏或清除应用程序中继日志,从而导致数据丢失。为了解决这个问题,当应用程序等待执行完成时,它不再搜索和删除部分事务。(Bug #88304, Bug #27049034)
复制:在插件启动和停止期间,Group Replication在服务器上执行内部操作,例如使用内部会话启用或禁用只读模式。在打开此内部会话时,如果会话总数超过设置的允许的开放会话数
max_connections
时,操作如预期的那样失败,但留下了一个线程,这稍后将导致问题。(Bug #88182, Bug #27008102, Bug #27016552)复制:如果将Group Replication配置为在使用初始化服务器时在服务器引导时启动
——初始化
或——initialize-insecure
,因为复制应用程序基础设施没有初始化,这导致了断言。现在,在初始化服务器时不会启动组复制。(Bug #87759, Bug #26802395)复制:在负载较重的组中,加入的成员可能需要检索大量数据以获得与组的同步。如果检索的数据量超过
View_change
当报文大小为4Mb时,成员将无法加入组并进入错误
状态。现在,包的大小从slave_max_allowed_packet
,默认为1GB。根据组进程的负载,您可能希望通过配置进一步增加包的大小slave_max_allowed_packet
.(Bug #87701, Bug #26770576)复制:在一个加入成员持续接收交易的组中,加入成员有时无法进入在线状态。这是由于测试传入消息队列的方式。(Bug #87631, Bug #26731317)
复制:无论一台机器上配置了多少个虚拟ip, Group Replication只能访问前12个地址。(Bug #86772, Bug #26324852)
微软的Windows操作系统:在Windows上,使用
myisam_use_mmap
而且冲洗
启用系统变量,MyISAM
不总是正确地刷新表文件。(错误# 26880757)微软的Windows操作系统:在Windows上,用于查询性能评估的计时器的分辨率得到了改进。(Bug #22305994, Bug #26734457)
JSON:当插入
JSON
的结果创建的值集团
查询时,插入的值有时可能包括先前插入该列的所有值的拼接。(Bug #87854, Bug #26867509)在
事件
筛选规则中的项audit_log
插件没有正确处理指定的值JSON
数组中。(错误# 27010045)值()
在某些情况下没有正确处理。(错误# 26881946)参考文献:参见Bug #19601973, Bug #17458914。
在某些情况下,包含比较运算符的虚拟生成列表达式可能会导致访问同一表的后续语句出现问题。(错误# 26881855)
对于调试构建,可能会错过对相关生成列的验证检查
更新
语句,导致服务器退出。(错误# 26838771)的默认值
authentication_ldap_sasl_auth_method_name
系统变量被错误设置为简单的
而不是SCRAM-SHA-1
,可以将该变量设置为不允许的值。(Bug #26838525, Bug #26093370)Linux发行版使用不同的SASL库版本,这取决于包类型。(错误# 26773194)
后一个
插入
声明与团
的值。重复密钥更新
子句由于违反约束而失败,则没有理由返回错误的类似语句可能导致服务器退出。(错误# 26734162)性能模式现在在可用时存储重写的SQL语句文本,而不是原始的SQL语句文本。(错误# 26732229)
时可能导致不正确的结果或服务器退出
SHA2 ()
传递了某些字符集中的用户定义变量。(错误# 26704451)mysqlpump不再包括
SQL_NO_CACHE
修饰符,因为该修饰符现在已弃用,并会导致弃用警告。(错误# 26694675)用
-DWITHOUT_SERVER =对
CMake选项失败,原因是试图链接authentication_ldap_sasl_client
针对嵌入式服务器库的客户端插件。(错误# 26665217)设置
authentication_ldap_simple_max_pool_size = 0
而且authentication_ldap_simple_init_pool_size = 0
的LDAP连接池authentication_ldap_simple
身份验证插件。(错误# 26646063)使用LDAP身份验证插件并且不使用任何身份验证字符串创建的帐户可以由LDAP服务器进行身份验证,而不管连接时指定的密码是什么。(错误# 26634245)
对象引用的外部连接和派生表的查询可能返回不正确的结果
常量
值来自外部连接的内部表。(错误# 26627181)后更新
没有调用触发器插入……重复密钥更新
当要更新的值和新值相同时。(Bug #26626277, Bug #87371)改变了
UMASK
而且UMASK_DIR
环境变量的默认值对数据库目录和表文件访问没有影响。(错误# 26529942)创建索引信息过多的表可能导致服务器退出。(错误# 26529369)
安装Microsoft Visual c++ 2010重分发包时,Windows的MSI包检测失败。(Bug #26501092, Bug #87139)
audit_log
插件野
对象可能使用不正确的线程ID信息创建,导致断言失败。(错误# 26362452)当
HASH_SCAN
的值之一被指定为slave_rows_search_algorithms
系统变量,这是MySQL 8.0.2的默认值,并且基于行的复制生效,因此对包含虚拟生成字段的表的更新可能会引发断言。该问题是由为创建用于搜索的散列而生成虚拟生成字段的字符串表示时的错误引起的。为了消除这个问题,MySQL不再为虚拟生成的字段创建散列。(错误# 26280724)尝试部分备份mysqlpump在启用gtid的服务器上失败,并产生错误消息,错误地提示这是不可能的。可以使用
——set-gtid-purged
) (Bug #26199978)由于未删除为之创建的文件实例,性能模式可能会泄漏内存
ALTER TABLE
使用表复制算法的操作。(Bug #26152751, Bug #86482)mysqlpump没有正确解析
表空间
result from中的从句显示创建表
语句来确定表结构。(错误# 26116415)有些语句可能导致摘要代码中的缓冲区溢出。感谢Laurynas Biveinis和Roel van de Paar的补丁。(错误# 26021187)
以前,当性能模式初始化失败时,它会编写一个非特定的初始化失败对错误日志的警告。现在它打印关于哪个内存分配失败的更具体的消息。(错误# 25996291)
当优化器选择Loose index Scan时,即使唯一索引没有索引扩展,也可能在具有唯一索引的表上出现不正确的结果。(Bug #25989915, Bug #86165, Bug #26532061, Bug #87207)
参考文献:这个问题是:Bug #21749123, Bug #78244的回归。
重新启动LDAP服务器可能导致使用连接池的LDAP身份验证插件无法正确进行身份验证。(错误# 25989788)
如果用户不存在,创建用户
如果用户存在,则不写入二进制日志。如果用户不存在于从服务器上,这可能导致不一致的复制行为。也出现了类似的问题如果存在则修改用户
.为了避免不一致,这些语句现在被写入二进制日志。(Bug #25813089, Bug #85733)内部内存缓冲区的不正确处理可能导致服务器退出。(错误# 25737271)
MySQL不能用GCC 7编译。(Bug #25643811, Bug #26825211)
对象的内容创建表的语句
选择
语句可能导致内存泄漏。(错误# 25586773)当一个
更新
需要一个主键大于1024字节的临时表,并且该表使用InnoDB
,服务器可能退出。(错误# 25153670)对于几何计算,无效的输入参数可能导致不正确的结果缓冲区,并导致引发断言或服务器退出。(错误# 25062396)
在某些条件下
audit_log
插件可以递归锁定互斥锁,导致服务器无响应。(错误# 24437533)在某些情况下,优化器选择松散索引扫描(
QUICK_GROUP_MIN_MAX_SELECT
)集团
查询,即使存在带有分离的谓词。中的条件时不执行范围扫描可以解决此问题在哪里
子句导致多个不相交的范围树。(错误# 24423143)设置
MYSQL_GROUP_SUFFIX
环境变量没有影响。(错误# 23072792)如果使用连接缓冲(例如,使用块嵌套循环算法),则使用许多左连接的查询会比较慢。(Bug #18898433, Bug #72854)
一种准备好的语句,包含
命令
引用参数的列表不总是被正确处理。(Bug #87863, Bug #26867652)服务器处理触发器和生成列错误。(Bug #86637, Bug #26251621)