版本 8.0.22 是 8.0 系列 MySQL Connector/J 的最新通用版本。它适用于 MySQL 服务器版本 8.0、5.7 和 5.6。它支持 Java 数据库连接 (JDBC) 4.2 API,并实现了 X DevAPI。
安全性增强: 以前,只能在客户端控制 LOAD DATA 语句的本地数据加载功能,方法是为客户端可访问的所有文件启用它,或者使用连接属性完全禁用它
allowLoadLocalInfile
。引入了一个新的连接属性,allowLoadLocalInfileInPath
以允许仅从特定文件路径加载本地数据;有关详细信息,请参阅配置属性中的选项 说明。-
X DevAPI:引入了 一个新的连接属性,
xdevapi.compression-algorithms
用于指定要使用的压缩算法以及协商它们的优先级。此外,旧的连接属性
xdevapi.compression-algorithm
(名称末尾没有 “ s ”)已重命名为xdevapi.compression-extensions
;它的功能与以前相同(提供压缩算法的实现),但其值的语法已更改:算法的三元组中的每个元素现在由冒号 (:) 分隔。有关详细信息,请参阅 使用 X DevAPI的连接压缩。 -
X DevAPI: Connector/J 现在支持用于 X DevAPI 会话的 SSL 客户端证书的 Java 密钥库。为此引入了以下新的连接属性:
xdevapi.ssl-keystore
xdevapi.ssl-keystore-type
xdevapi.ssl-keystore-password
有关详细信息,请参阅使用 SSL 安全连接。
当尝试在 Windows 系统上使用 Connector/J 和命名管道打开到 MySQL 服务器的多个连接时,尝试有时会失败并出现“所有管道实例都忙”错误。通过此修复,如果使用连接属性
connectTimeout
或方法 设置了超时DriverManager.setLoginTimeout()
,Connector/J 将反复重试打开命名管道,直到达到超时或成功打开命名管道。作为此新行为的副作用,将有一个延迟,等于超时长度,用于为失败的命名管道连接抛出错误,即使它是由除“所有管道实例都已连接”以外的错误引起的忙碌的。” (错误#31711961,错误#98667)当连接选项
sslMode
设置为 时VERIFY_IDENTITY
,Connector/J 现在会根据服务器 X.509 证书中主题备用名称 (SAN) 扩展名下提供的主机名或 IP 地址来验证连接字符串中的主机名。此外,当证书中未提供 SAN 或不包含任何 DNS 名称或 IP 地址条目时,现在会根据通用名称 (CN) 执行验证。证书中列出的主机名(位于 SAN 或 CN 下)可以包含 RFC 6125 标准中指定的通配符。感谢 Daniël van Eeden 对补丁的贡献。(错误#31443178、错误#99767、错误#28834903、错误#92903)使用 Connector/J 时, 现在可以通过在配置 JVM 时将新的系统属性设置为 来
AbandonedConnectionCleanupThread
完全禁用线程 。该功能适用于始终关闭其创建的所有连接的行为良好的应用程序。感谢 Andrey Turbanov 为新功能做出的贡献。(漏洞 #30304764,漏洞 #96870)com.mysql.cj.disableAbandonedConnectionCleanup
true
Connector/J 现在支持在 Windows 和 Linux 平台上 使用简单或 SASL (SCRAM-SHA-1) LDAP 身份验证对 MySQL Enterprise Server 进行客户端身份验证。
-
现在可以防止 Connector/J 回退到系统范围的信任库和密钥库,分别用于服务器和客户端身份验证。对于 JDBC 连接, 为控件引入了两个新的连接属性
fallbackToSystemKeyStore
和 。fallbackToSystemTrustStore
虽然这些属性在true
默认情况下(启用回退),但将它们设置为false
禁用回退。有关详细信息,请参阅 使用 SSL 安全连接。X DevAPI:新的连接属性
xdevapi.fallback-to-system-keystore
和xdevapi.fallback-to-system-truststore
。 JBoss 的集成类已从 Connector/J 中删除。
在负载均衡设置中,如果设置了连接参数
loadBalanceBlacklistTimeout
,曾经不可用的服务器即使在重新建立连接后仍会保留在黑名单中,这会影响系统的性能。使用此修复程序后,服务器会在再次可用后立即从黑名单中删除。(漏洞 #31699357,漏洞 #96309)使用 a
PreparedStatement
将 a 存储Date
到数据库中有时会导致NullPointerException
. 这是因为 中缺少一些分配ServerPreparedQueryBindValue.clone()
,此补丁更正了该问题。(错误#31418928,错误#99713)当客户端尝试使用服务器的 X 协议端口建立 JDBC 连接时,Connector/J 抛出一个
ArrayIndexOutOfBoundsException
. 通过此修复,Connector/J 会针对对端口使用错误的协议抛出正确的异常并返回正确的错误消息。(缺陷 #31083755,缺陷 #99076)LocalDate
当服务器和客户端之间存在时区差异时,通过 Connector/J 设置的 、 和值会发生变化LocalDateTime
。LocalTime
此修复程序通过处理 、 和 解决了这个问题LocalDate
,LocalTime
没有LocalDateTime
时区转换,也没有到其他日期时间类的中间转换。感谢 Iwao Abe 对修复的贡献。(缺陷 #29015453,缺陷 #93444)