VersionDrift
Product

MySQL 9.3.1 → 26.10.0

15 releases · 11 breaking changes · 48 security fixes · 4 advisories fixed

48security11breaking26deprecated42feature194fix

Vulnerabilities fixed by this upgrade

  • 5.0 CVE-2026-34317 Vulnerability in the MySQL Shell product of Oracle MySQL (component: Shell: Core Client). Supported versions that are affected are 8.0.0-8.0.45, 8.4.0-8.4.8 and 9.0.0-9.6.0. Easily exploitable vu…
  • 5.8 CVE-2026-34318 Vulnerability in the MySQL Shell product of Oracle MySQL (component: Shell: Core Client). Supported versions that are affected are 8.0.0-8.0.45, 8.4.0-8.4.8 and 9.0.0-9.6.0. Difficult to exploit…
  • 5.0 CVE-2026-34319 Vulnerability in the MySQL Shell product of Oracle MySQL (component: Shell: Core Client). Supported versions that are affected are 8.0.0-8.0.45, 8.4.0-8.4.8 and 9.0.0-9.6.0. Easily exploitable vu…
  • 4.9 CVE-2026-21964 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Thread Pooling). Supported versions that are affected are 8.0.0-8.0.44, 8.4.0-8.4.7 and 9.0.0-9.5.0. Easily exploitab…

Breaking changes

  • breaking As of this release, MySQL no longer supports Enterprise Linux 7 (and associated glibc 2.17 generic). in 26.7.0
  • breaking As of this release, MySQL no longer supports Enterprise Linux 7 (and associated glibc 2.17 generic). in 9.7.2
  • breaking Under certain circumstances, find_in_set() could return incorrect results. The optimization which caused this has been removed. Our thanks to Jingqi Tian for the contribution. (Bug #119995, Bug #39056621) in 9.7.0
  • breaking A number of unused symbols were removed from the code base. (Bug #38557463) in 9.6.0
  • breaking InnoDB: InnoDB redo logging error messages now include the current LSN and redo log capacity information. A new warning code ER_IB_WRN_REDO_DISABLED_INFO is added which includes the current LSN. A new error code ER_IB_MSG_LOG_WRITER_WAIT_ON_NEW_LOG_FILE_INFO is added to include the current log… in 9.6.0
  • breaking InnoDB: The field fk_max_recusive_level in dict_table_t struct is no longer used and has been removed. Our thanks to Xiaocong Ding for the contribution. (Bug #119063, Bug #38492574) in 9.6.0
  • breaking Important Change: IFNULL() used in a LIKE clause raised ER_CANT_AGGREGATE_2COLLATIONS. This was due to the fact that IFNULL() returns a binary collation and the collation derivation NONE, but NONE was not allowed in this context, leading to the error. We solve this problem by making a slight… in 9.4.0
  • breaking Removed a warning in gcs_xcom_networking.cc. (Bug #38021787) in 9.4.0
  • breaking MySQL Server now requires GCC version 11 or later to compile. As part of this change, support for ARM systems using RHEL7 is removed in this release, due to the lack of availability of GCC 11 on that platform. (Bug #38004285) in 9.4.0
  • breaking Removed workaround for old versions of CMake. Note The minimum version of CMake supported for building MySQL is 3.14.6. (Bug #37901122) in 9.4.0
  • breaking Removed warnings observed when compiling the server with Clang 20. (Bug #37785251) in 9.4.0

Security changes

  • security Fixed an issue relating to server-supplied RSA public-key handling during client-side SHA-2 authentication. (Bug #39883040) in 26.10.0
  • security Fixed an issue relating to runtime key-type validation by keyring UDFs. (Bug #39838747) in 26.10.0
  • security Fixed an issue relating to client parsing of WebAuthn assertion challenge packets. (Bug #39740347) in 26.10.0
  • security Fixed an issue relating to resource cleanup during Enterprise Encryption digest-function initialization. (Bug #39665448) in 26.10.0
  • security Fixed an issue relating to nullable input supplied to keyring_key_generate(). (Bug #39633350) in 26.10.0
  • security Fixed an issue relating to nullable numeric arguments supplied to audit_api_message_emit_udf(). (Bug #39633136) in 26.10.0
  • security MySQL now supports post-quantum cryptography (PQC) in TLS 1.3 connections for OpenSSL 3.5.0 or later. This enables negotiation of PQC-capable TLS key-exchange groups, including hybrid classical/PQC groups, and advertising of PQC TLS handshake signature algorithms. The following system variables… in 26.7.0
  • security force_pqc: only accept main TLS connections negotiated with a PQC- compatible key exchange group. in 26.7.0
  • security admin_force_pqc: only accept admin TLS connections negotiated with a PQC- compatible key exchange group. in 26.7.0
  • security replication_force_pqc: require asynchronous replication TLS connections to use a PQC-compatible key exchange group. in 26.7.0
  • security group_replication_force_pqc: require Group Replication recovery TLS connections to use a PQC-compatible key exchange group. in 26.7.0
  • security mysqlx_force_pqc: only accept X Plugin TLS connections negotiated with a PQC-compatible key exchange group. in 26.7.0
  • security tls_kex: TLS key exchange groups to use for the main connection channel. in 26.7.0
  • security admin_tls_kex: TLS key exchange groups to use for the admin connection channel. in 26.7.0
  • security replication_tls_kex: TLS key exchange groups to use for asynchronous replication TLS connections. in 26.7.0
  • security group_replication_tls_kex: TLS key exchange groups to use for Group Replication recovery TLS connections. in 26.7.0
  • security mysqlx_tls_kex: TLS key exchange groups to use for X Plugin TLS connections. in 26.7.0
  • security The following boolean system variables define which algorithm is advertised. If enabled, PQC is used. If disabled, only classical TLS handshake signature algorithms are advertised. Note If enabled, but PQC is not available, the OpenSSL default is used. in 26.7.0
  • security use_pqc_sign: which algorithm is advertised on the main connection channel. in 26.7.0
  • security admin_use_pqc_sign: which algorithm is advertised on administration connections. in 26.7.0
  • security replication_use_pqc_sign: which algorithm is advertised on asynchronous replication connections. in 26.7.0
  • security group_replication_use_pqc_sign: which algorithm is advertised on Group Replication recovery connections. in 26.7.0
  • security mysqlx_use_pqc_sign: which algorithm is advertised on X Plugin connections. in 26.7.0
  • security Tls_key_exchange_algorithm: indicates the TLS key exchange group negotiated for the current TLS connection. in 26.7.0
  • security Tls_sign_algorithm: indicates the TLS handshake signature algorithm negotiated for the current TLS connection. in 26.7.0
  • security Mysqlx_force_pqc: value of the effective configuration applied to the current X plugin TLS channel. in 26.7.0
  • security Mysqlx_tls_kex: value of the effective configuration applied to the current X plugin TLS channel. in 26.7.0
  • security Mysqlx_use_pqc_sign: value of the effective configuration applied to the current X plugin TLS channel. in 26.7.0
  • security Fixed an issue relating to server-supplied RSA public-key handling during client-side SHA-2 authentication. (Bug #39883040) in 9.7.4
  • security Fixed an issue relating to runtime key-type validation by keyring UDFs. (Bug #39838747) in 9.7.4
  • security Fixed an issue relating to client parsing of WebAuthn assertion challenge packets. (Bug #39740347) in 9.7.4
  • security Fixed an issue relating to nullable numeric arguments supplied to audit_api_message_emit_udf(). (Bug #39633136) in 9.7.4
  • security This release is a Critical Security Patch Update. See Oracle Critical Security Patch Update Advisory - June 2026 for more information. in 9.7.1
  • security Authentication now supports PBKDF2 storage format with Caching_sha2_password, providing enhanced security and flexibility. This update allows for the use of PBKDF2 with SHA512, enabling a smoother migration path from existing formats and ensuring even stronger security guarantees. With this… in 9.7.0
  • security MySQL Enterprise Edition 9.7.0 introduces dynamic data masking policies. These policies enable masking at the column level in the base table, enabling least-privilege access. The following SQL statements are added: The following SQL statements are updated to support masking policies: The following… in 9.7.0
  • security CREATE MASKING POLICY in 9.7.0
  • security DROP MASKING POLICY in 9.7.0
  • security SHOW CREATE MASKING POLICY in 9.7.0
  • security CREATE TABLE in 9.7.0
  • security ALTER TABLE ... ADD COLUMN in 9.7.0
  • security ALTER TABLE ... ALTER COLUMN in 9.7.0
  • security CURRENT_ROLE_IN(role1,role2,...): supports a comma-separated list of roles. in 9.7.0
  • security CURRENT_USER_IN(user1,user2,...): supports a comma-separated list of usernames. in 9.7.0
  • security Important Change: MySQL now supports enhanced security and flexibility with the relocation of MD5() and SHA1() SQL functions to a separate component, allowing for greater control over deprecated hashing algorithms and improved compliance with security standards. You can install the classic_hashing… in 9.6.0
  • security Fixed an issue relating to authentication. (Bug #118447, Bug #38077617) in 9.6.0
  • security The error message returned when attempting to create a user with an existing user name was unclear. (Bug #28331, Bug #11746738) in 9.6.0
  • security Security Enhancement: The default value of caching_sha2_password_digest_rounds is increased to 10,000. (WL #16974) in 9.5.0
  • security MySQL Replication supports enhanced security features with encryption now being enabled for all replication connections by default. With this configuration change, the default value of the SOURCE_SSL option in the CHANGE REPLICATION SOURCE TO Statement has been changed to 1, the default value of… in 9.5.0

Deprecations

  • deprecated Important Change: MySQL no longer supports OpenSSL versions older than 1.1.1. Build checks, packaging requirements, help text, and version guards now enforce the new minimum. (Bug #39546984) in 26.10.0
  • deprecated The component-facing psi_thread.h header now uses psi_thread_v7. PSI_THREAD_VERSION values 4 through 6 are deprecated for plugins. (Bug #39802197) in 26.10.0
  • deprecated The following replication system variables are deprecated in this release and scheduled for removal in a later release: (WL #17300) in 26.7.0
  • deprecated group_replication_communication_stack in 26.7.0
  • deprecated group_replication_ip_allowlist in 26.7.0
  • deprecated The following replication system variables are deprecated in this release and scheduled for removal in a later release: (WL #17300) in 9.7.2
  • deprecated group_replication_communication_stack in 9.7.2
  • deprecated group_replication_ip_allowlist in 9.7.2
  • deprecated MySQL now provides an INTERPRET_UTF8_AS_UTF8MB4 SQL mode that controls whether the deprecated utf8 character set and utf8_* collation aliases in SQL statements are interpreted as utf8mb3 or utf8mb4. The mode is disabled by default, preserving the previous utf8mb3 interpretation. When enabled, utf8… in 9.5.0
  • deprecated The group_replication_allow_local_lower_version_join system variable, deprecated in MySQL 8.4.0, has now been removed. (WL #16019) in 9.5.0
  • deprecated The replica_parallel_type system variable, deprecated in MySQL 8.0.29, has now been removed. (WL #13955) in 9.5.0
  • deprecated The SCRAM-SHA-1 authentication method for SASL LDAP authentication is now deprecated, and subject to removal in a future version of MySQL. You are encouraged to use SCRAM-SHA-256 instead. As part of this work, the default value for the authentication_ldap_sasl_auth_method_name system variable has… in 9.5.0
  • deprecated The following deprecated plugins are removed in this release: (WL #16801) in 9.5.0
  • deprecated semisync_master replaced by semisync_source. in 9.5.0
  • deprecated semisync_slave replaced by semisync_replica. in 9.5.0
  • deprecated The keyring_okv plugin is deprecated and replaced by the keyring_kmip component, enabling secure communication with Key Management Interoperability Protocol (KMIP) 1.1-compatible products such as Oracle Key Vault, Gemalto SafeNet KeySecure Appliance, Townsend Alliance Key Manager, and Entrust… in 9.5.0
  • deprecated Microsoft Windows: MySQL Configurator command-line option names and aliases have been revised to more clearly indicate their purpose. Multiword options accept either hyphens or underscores as separators, but the separator styles cannot be mixed within one option name. Deprecated names and aliases… in 9.5.0
  • deprecated Warnings raised by Clang 20 for non-trivially copyable types, deprecated literal operators, and incorrect main function declarations are no longer generated. (Bug #37785251) in 9.4.0
  • deprecated On MacOS, silenced deprecation warnings generated by Xcode 14; this includes suggestions to use snprintf(3) instead of sprintf(3), and warnings about possible loss of precision when converting from 64-bit to 32-bit integers. (Bug #34776172) in 9.4.0
  • deprecated Microsoft Windows: As MySQL Enterprise Edition 9.4.0 includes a new The MySQL Enterprise Firewall Component), intended to be a replacement for the now deprecated MySQL Enterprise Firewall plugin, the MySQL Configurator now supports enabling the firewall component and upgrading to it from the… in 9.4.0
  • deprecated As part of ongoing work to transition from MySQL plugins to MySQL components, the API used to write MySQL plugins is now deprecated and subject to removal in a future version of MySQL. This change has the following effects: Keyring Components Versus Keyring Plugins, provides a summary of the… in 9.4.0
  • deprecated The MySQL server's --early-plugin-load option is deprecated. Starting the server with this option now raises a deprecation warning. in 9.4.0
  • deprecated A deprecation warning is now issued whenever a keyring plugin is loaded. in 9.4.0
  • deprecated The system variable temptable_use_mmap, deprecated in version 8.0.26, is removed in this version. (WL #16745) in 9.4.0
  • deprecated The SQL functions MD5() and SHA1() are deprecated as of this release and scheduled for removal in a future release. (WL #16955) in 9.4.0
  • deprecated Packaging: This release includes a MySQL Enterprise Firewall component (see The MySQL Enterprise Firewall Component) intended to replace the firewall plugin, which is now deprecated and thus subject to removal in a future version of MySQL. The component implements most of the plugin's… in 9.4.0

Every release in between

fixFixed an issue relating to Audit Log filter UDF error-message formatting. (Bug #39472337)
fixThe version of Boost needed to build MySQL has been raised from 1.87.0 to 1.92.0. (Bug #40006694)
fixMySQL CMake configuration could fail with newer Cyrus SASL versions when plugins present in older library releases were unavailable. Plugin files are now copied on a best-effort basis, permitting builds with both older and newer plugin sets. (Bug #39964171)
fixRapidYAML 0.16.0 is now bundled for use as an optional dependency of opentelemetry-cpp when built with -DWITH_CONFIGURATION=ON. (Bug #39894165)
fixMySQL Server could fail to compile with GCC 16.1 due to warnings treated as errors. (Bug #39688855, Bug #39671507, Bug #39670670, Bug #39670901)
fixMySQL source builds can now be configured with OpenSSL 4.0. Compatibility updates were also made for curl, libfido2, and gRPC. (Bug #39102340)
fixMySQL command services did not return stored-procedure output parameters from prepared CALL statements. Prepared-statement multi-result support now returns those parameters as a result set to component consumers. (Bug #39836178)
fixThe public mysql_command_services API now supports password-authenticated local Classic Protocol connections through the write-only MYSQL_COMMAND_PASSWORD option. Any non-null value, including an empty string, selects normal authentication to the local server; null retains embedded behavior.…
fixComponents using mysql_account_database_security_context_lookup can now query an account's lock state through the read-only Boolean account_locked option exposed by mysql_security_context_options. (Bug #39702733)
fixWith the default command-service DOM consumer, mysql_use_result() could return a non-NULL result containing metadata for a nonempty query while mysql_fetch_row() immediately returned NULL. A private cursor now exposes the materialized rows while preserving unbuffered-result semantics, row lengths,…
fixThe default command-service DOM consumer could return incomplete MYSQL_FIELD metadata, including a null catalog and zero metadata-name lengths. It now returns catalog def with length 3 and supplies the byte lengths of the remaining metadata names, matching libmysql and Classic Protocol results.…
fixFixed an issue relating to concurrent operations during deinitialization of the connection_control component. (Bug #39564040)
fixFixed an issue relating to failed-authentication tracking and delays by the connection_control component. (Bug #39564049)
deprecatedImportant Change: MySQL no longer supports OpenSSL versions older than 1.1.1. Build checks, packaging requirements, help text, and version guards now enforce the new minimum. (Bug #39546984)
fixMicrosoft Windows: An upgrade could fail if the Firewall component was installed on the source version. The upgrade incorrectly selected the Firewall plugin's stored procedure upgrade path. (Bug #39735395, Bug #120932)
fixInnoDB: A previous InnoDB deadlock fix made row-size estimates more accurate for B-tree operations, but also made CREATE TABLE and ALTER TABLE validation stricter. As a result, some table definitions accepted by earlier MySQL LTS releases were unexpectedly rejected or produced warnings, disrupting…
fixWhen the external MeCab parser failed during deferred FULLTEXT tokenization, a base row could be committed without complete token postings, causing searches to miss the row. Parser failures now produce a client warning, including for autocommit statements. Errors were returned similar to the…
fixThe error log now reports warnings when the history-list length crosses innodb_max_purge_lag and when purge lag begins delaying DML. Existing purge-lag configuration controls the behavior; no new system variables were added. Our thanks to Tony Chen and the team at Amazon for the contribution. (Bug…
fixAfter an exported table was modified, its tablespace discarded, and an older exported image imported, point lookups could return rows or values from the discarded tablespace generation. Stale Adaptive Hash Index entries are now treated as misses so lookups fall back to normal B-tree traversal.…
fixAfter ALTER TABLE ... IMPORT TABLESPACE failed, stale pages from the discarded tablespace could later trigger an assertion during eviction. Failed-import cleanup now preserves the index space identifier required to remove stale Adaptive Hash Index entries. Errors were returned similar to the…
fixFixed an issue relating to null input supplied to the InnoDB redo-log consumer UDF. (Bug #39632565) References: See also: Bug #34085310, Bug #36004840.
fixFixed an issue relating to SHOW CREATE output for short non-SQL stored-program or library bodies. (Bug #39361183)
fixFixed an issue relating to validation of index pages during transportable tablespace import. (Bug #39295605)
fixFixed an issue relating to parser nesting for InnoDB full-text Boolean Mode expressions. (Bug #39234789)
fixFixed an issue relating to concurrent COPY ALTER operations. Our thanks to George Ma and the team at Alibaba for the contribution. (Bug #39134921)
fixFixed an issue relating to renaming columns used by self-referencing InnoDB foreign keys. (Bug #39091341)
fixIn debug builds, concurrent foreign-key operations with the adaptive hash index enabled could trigger an index-lifetime assertion. InnoDB now protects the referenced table throughout the foreign-key check. Errors were returned similar to the following: Assertion failure:…
fixAfter the final redo-recovery batch, InnoDB could write and evict every page loaded into the buffer pool, increasing recovery time and causing later rereads. It now writes and evicts only pages with buffered changes and sorts the flush lists. (Bug #37296558)
fixHigh-concurrency READ COMMITTED workloads could perform poorly on NUMA systems because repeatedly closing read views acquired a global mutex and copied the active transaction set. Read-view objects can now be reused without taking that mutex solely for closure. Our thanks to Bin Wang of…
featureJSON Relational Duality Views now support table- and column-level CHECK and NO CHECK annotations for ETAG participation, and column-level UPDATE and NO UPDATE annotations for field mutability. CHECK is the table-level default, and columns inherit table settings unless explicitly overridden.…
deprecatedThe component-facing psi_thread.h header now uses psi_thread_v7. PSI_THREAD_VERSION values 4 through 6 are deprecated for plugins. (Bug #39802197)
securityFixed an issue relating to server-supplied RSA public-key handling during client-side SHA-2 authentication. (Bug #39883040)
securityFixed an issue relating to runtime key-type validation by keyring UDFs. (Bug #39838747)
securityFixed an issue relating to client parsing of WebAuthn assertion challenge packets. (Bug #39740347)
securityFixed an issue relating to resource cleanup during Enterprise Encryption digest-function initialization. (Bug #39665448)
securityFixed an issue relating to nullable input supplied to keyring_key_generate(). (Bug #39633350)
securityFixed an issue relating to nullable numeric arguments supplied to audit_api_message_emit_udf(). (Bug #39633136)
featureImportant Change: MySQL Server now supports a four-part release identity in the form MAJOR.MINOR.PATCH.UPDATE, with an empty update component represented as zero. The complete version is available through VERSION_WITH_UPDATE(), the read-only global version_with_update variable, mysqld…
featureThe command-service option MYSQL_COMMAND_BYPASS_MAX_CONNECTIONS can now be set before connection. Its default of true preserves administrative admission; setting it to false makes an embedded session subject to max_connections without using the reserved extra slot. (Bug #39980933)
featureThe mysql_thd_attributes service now exposes a read-only is_substatement Boolean, enabling components to distinguish top-level statements from stored-function and trigger execution. (Bug #39980910)
+131 more items in the release notes
fixWith legacy audit-log filtering, setting audit_log_include_accounts, clearing it to NULL, and then changing audit_log_exclude_accounts could filter out every account and stop audit logging. (Bug #35137790)
fixThe server could close unexpectedly if audit_log_encryption_password_get(keyring ID) was called. (Bug #33296125)
featureThe following Audit Log status variables are introduced in this version: This variable reports the number of audit log files generated by the Audit Log plugin or component when audit_log_format=JSON. The value is incremented for automatic rotations and decremented for pruning actions. (WL #17292)
deprecatedThe following replication system variables are deprecated in this release and scheduled for removal in a later release: (WL #17300)
deprecatedgroup_replication_communication_stack
deprecatedgroup_replication_ip_allowlist
featureInnoDB undo tablespace creation and truncation no longer rely on a local undo truncate log files. Undo truncation progress information is now stored in the Undo Tablespace header. As of this release, undo truncation logs are no longer generated. Note For backward compatibility, existing truncate…
breakingAs of this release, MySQL no longer supports Enterprise Linux 7 (and associated glibc 2.17 generic).
featureImportant Change: MySQL 26.7 introduces the Change Stream Applier (CSA), a new implementation of the replica SQL applier for multi-threaded replication. CSA is an opt-in, per-channel alternative to the Multi-Threaded Applier (MTA). It uses a modular scheduling and execution design to improve…
featureAllows parallel reads of relay-log-backed transactions and release cached event memory as transactions are consumed.
featureAPPLIER_VERSION = 1|2: Selects the applier implementation.
feature1: Multi-Threaded Applier. Default for new channels.
featureAPPLIER_WORKER_COUNT: CSA-only. Sets the number of CSA workers for the channel. Range is 1-1024. If omitted for a new channel, replica_parallel_workers is used.
featureAPPLIER_EVENT_MEMORY_LIMIT: CSA-only. Sets a per-channel cache limit for binlog events. Default is 0 when omitted for a new channel. The effective cache limit is at least equal to the value of replica_max_allowed_packet, a lower configured value produces a warning.
securityMySQL now supports post-quantum cryptography (PQC) in TLS 1.3 connections for OpenSSL 3.5.0 or later. This enables negotiation of PQC-capable TLS key-exchange groups, including hybrid classical/PQC groups, and advertising of PQC TLS handshake signature algorithms. The following system variables…
securityforce_pqc: only accept main TLS connections negotiated with a PQC- compatible key exchange group.
securityadmin_force_pqc: only accept admin TLS connections negotiated with a PQC- compatible key exchange group.
securityreplication_force_pqc: require asynchronous replication TLS connections to use a PQC-compatible key exchange group.
securitygroup_replication_force_pqc: require Group Replication recovery TLS connections to use a PQC-compatible key exchange group.
securitymysqlx_force_pqc: only accept X Plugin TLS connections negotiated with a PQC-compatible key exchange group.
securitytls_kex: TLS key exchange groups to use for the main connection channel.
securityadmin_tls_kex: TLS key exchange groups to use for the admin connection channel.
securityreplication_tls_kex: TLS key exchange groups to use for asynchronous replication TLS connections.
securitygroup_replication_tls_kex: TLS key exchange groups to use for Group Replication recovery TLS connections.
securitymysqlx_tls_kex: TLS key exchange groups to use for X Plugin TLS connections.
securityThe following boolean system variables define which algorithm is advertised. If enabled, PQC is used. If disabled, only classical TLS handshake signature algorithms are advertised. Note If enabled, but PQC is not available, the OpenSSL default is used.
securityuse_pqc_sign: which algorithm is advertised on the main connection channel.
securityadmin_use_pqc_sign: which algorithm is advertised on administration connections.
securityreplication_use_pqc_sign: which algorithm is advertised on asynchronous replication connections.
securitygroup_replication_use_pqc_sign: which algorithm is advertised on Group Replication recovery connections.
securitymysqlx_use_pqc_sign: which algorithm is advertised on X Plugin connections.
securityTls_key_exchange_algorithm: indicates the TLS key exchange group negotiated for the current TLS connection.
securityTls_sign_algorithm: indicates the TLS handshake signature algorithm negotiated for the current TLS connection.
securityMysqlx_force_pqc: value of the effective configuration applied to the current X plugin TLS channel.
securityMysqlx_tls_kex: value of the effective configuration applied to the current X plugin TLS channel.
securityMysqlx_use_pqc_sign: value of the effective configuration applied to the current X plugin TLS channel.
featureImportant Change: MySQL Server now uses calendar-based versioning for releases after the 9.7 LTS series. Version values use Year.Month.Patch (YY.M.P) format. MySQL 26.7.0 is the first such calendar-version release. The following are added to the mysql_version.h to identify the previous LTS…
featureMYSQL_PREVIOUS_LTS_VERSION: The previous LTS version number. For example, "9.7.0" is the previous LTS version for MySQL 26.7.0.
featureMYSQL_PREVIOUS_LTS_VERSION_ID: The identifier of the previous LTS version. For example, "9.7.0" is represented as 90700.
featureMySQL upgrade performance is improved by streamlining the ALTER TABLE statements which run on mysql.general_log and mysql.slow_log. Our thanks to Karry Zhang and the team at Alibaba for the contribution. (Bug #118132, Bug #37944523)
+157 more items in the release notes
fixFixed an issue relating to Audit Log filter UDF error-message formatting. (Bug #39472337)
fixMySQL CMake configuration could fail with newer Cyrus SASL versions when plugins present in older library releases were unavailable. Plugin files are now copied on a best-effort basis, permitting builds with both older and newer plugin sets. (Bug #39964171)
fixFixed an issue relating to concurrent operations during deinitialization of the connection_control component. (Bug #39564040)
fixFixed an issue relating to failed-authentication tracking and delays by the connection_control component. (Bug #39564049)
fixInnoDB: A previous InnoDB deadlock fix made row-size estimates more accurate for B-tree operations, but also made CREATE TABLE and ALTER TABLE validation stricter. As a result, some table definitions accepted by earlier MySQL LTS releases were unexpectedly rejected or produced warnings, disrupting…
fixWhen the external MeCab parser failed during deferred FULLTEXT tokenization, a base row could be committed without complete token postings, causing searches to miss the row. Parser failures now produce a client warning, including for autocommit statements. Errors were returned similar to the…
fixAfter an exported table was modified, its tablespace discarded, and an older exported image imported, point lookups could return rows or values from the discarded tablespace generation. Stale Adaptive Hash Index entries are now treated as misses so lookups fall back to normal B-tree traversal.…
fixAfter ALTER TABLE ... IMPORT TABLESPACE failed, stale pages from the discarded tablespace could later trigger an assertion during eviction. Failed-import cleanup now preserves the index space identifier required to remove stale Adaptive Hash Index entries. Errors were returned similar to the…
fixFixed an issue relating to null input supplied to the InnoDB redo-log consumer UDF. (Bug #39632565) References: See also: Bug #34085310, Bug #36004840.
fixFixed an issue relating to SHOW CREATE output for short non-SQL stored-program or library bodies. (Bug #39361183)
fixFixed an issue relating to validation of index pages during transportable tablespace import. (Bug #39295605)
fixFixed an issue relating to parser nesting for InnoDB full-text Boolean Mode expressions. (Bug #39234789)
fixFixed an issue relating to concurrent COPY ALTER operations. Our thanks to George Ma and the team at Alibaba for the contribution. (Bug #39134921)
fixFixed an issue relating to renaming columns used by self-referencing InnoDB foreign keys. (Bug #39091341)
fixIf InnoDB page reorganization produced a size mismatch, InnoDB could continue using the reorganized page without recording the corresponding redo. A later insert followed by a server crash could consequently cause recovery failure or page corruption. The mismatch is now treated as fatal rather…
fixFixed an issue relating to mysqldump processing of server-provided table identifiers. (Bug #39905165)
fixFixed an issue relating to mysqldump validation of server-provided result, identifier, database, and table metadata. (Bug #39832176, Bug #39832186, Bug #39832202)
fixMicrosoft Windows: Fixed an issue relating to formatting unusually long query identifiers. (Bug #39883066)
fixFixed an issue relating to column-identifier validation for histogram operations. (Bug #39882926)
fixFixed an issue relating to argument-length validation for windowed BIT_OR() and BIT_AND(). (Bug #39882731)
fixFixed an issue relating to range handling during group index skip scans. (Bug #39867741)
fixFixed an issue relating to repeated correlated outer-field references in nested queries. (Bug #39603658)
fixFixed an issue relating to optimizer handling of IN predicates. (Bug #39603649)
fixFixed an issue relating to optimization of nested subquery expressions used with IN or NOT IN. (Bug #39603575)
fixFixed an issue relating to multi-join plans. (Bug #39197517)
fixWith the hypergraph optimizer enabled, single-table UPDATE or DELETE statements using ORDER BY and a subquery converted to a hash semijoin or antijoin could modify the wrong rows. An update through a view with CHECK OPTION could also use incorrect rows or fail when required row identifiers were…
fixWith optimizer_switch set to index_merge_union=off, an index-merge plan for disjunctive conditions could omit a disjunct and return incomplete results. For example, a query expected to return four rows instead returned: Empty set (0.00 sec). Our thanks to Kun Qin for the contribution. (Bug…
fixThe bundled libevent library was upgraded from 2.1.11 to 2.1.13. (Bug #40007263)
fixInstalling commercial MySQL packages on EL10 aarch64 could fail because client programs and manual pages conflicted with files supplied by mariadb11.8. Package metadata now declares additional obsoletes to resolve these conflicts. Errors were returned similar to the following: Error: Transaction…
fixThe bundled TIRPC library was upgraded to version 1.3.7. (Bug #39703871)
fixRebuilding MySQL source RPMs on minimal EL8 or EL9 systems could fail because required dependencies were omitted from mysql.spec.in. Our thanks to Simon Mudd for the contribution. (Bug #120895, Bug #39894524)
fixAfter an asynchronous replica restarted, its I/O and SQL threads could appear in INFORMATION_SCHEMA.PROCESSLIST but remain absent from performance_schema.processlist until replication was stopped and restarted. Foreground system threads with process-list IDs are now retained, and an empty user…
fixFixed an issue relating to Group Replication message-decoding limits. (Bug #39905199)
fixFixed an issue relating to sender validation for Group Replication messages. (Bug #39851456)
fixFixed an issue relating to Group Replication UDF lifecycle handling during plugin unloading. (Bug #39838541)
securityFixed an issue relating to server-supplied RSA public-key handling during client-side SHA-2 authentication. (Bug #39883040)
securityFixed an issue relating to runtime key-type validation by keyring UDFs. (Bug #39838747)
securityFixed an issue relating to client parsing of WebAuthn assertion challenge packets. (Bug #39740347)
securityFixed an issue relating to nullable numeric arguments supplied to audit_api_message_emit_udf(). (Bug #39633136)
featureImportant Change: MySQL Server now supports a four-part release identity in the form MAJOR.MINOR.PATCH.UPDATE, with an empty update component represented as zero. The complete version is available through VERSION_WITH_UPDATE(), the read-only global version_with_update variable, mysqld…
+52 more items in the release notes
fixWith legacy audit-log filtering, setting audit_log_include_accounts, clearing it to NULL, and then changing audit_log_exclude_accounts could filter out every account and stop audit logging. (Bug #35137790)
fixThe server could close unexpectedly if audit_log_encryption_password_get(keyring ID) was called. (Bug #33296125)
featureThe following Audit Log status variables are introduced in this version: This variable reports the number of audit log files generated by the Audit Log plugin or component when audit_log_format=JSON. The value is incremented for automatic rotations and decremented for pruning actions. (WL #17292)
fixThe version of libfido2 used with MySQL was upgraded to 1.17.0. (Bug #39478664)
fixFixed a potential memory leak in the comp_err utility. (Bug #36532183)
deprecatedThe following replication system variables are deprecated in this release and scheduled for removal in a later release: (WL #17300)
deprecatedgroup_replication_communication_stack
deprecatedgroup_replication_ip_allowlist
fixInnoDB: Fixed a debug assertion in row_upd_rec_in_place() for non-versioned ROW_FORMAT=REDUNDANT rows. (Bug #39165747)
fixInnoDB: During a buffer-pool resize, Adaptive Hash Index could be disabled in mysqld-auto.cnf even though innodb_adaptive_hash_index=ON. (Bug #39157211)
fixInnoDB: Fixed an issue relating to table maintenance and clean-up. (Bug #39091376)
fixInnoDB: Fixed an issue relating to unique indexes. (Bug #38501299)
fixInnoDB: Under certain circumstances, when adding an AUTO_INCREMENT column to an existing table, some records in that table could be skipped, resulting in inaccurate values in the AUTO_INCREMENT column. Our thanks to Huaxiong Song and the team at Alibaba for the contribution. (Bug #115136, Bug…
fixUnder high I/O load, particularly with many threads and the open-file limit exhausted, concurrent temporary-tablespace truncation could cause a deadlock and server failures while a stale buffer page was prepared for I/O. (Bug #39244016)
fixValid CREATE TABLE or INSERT operations involving an InnoDB SPATIAL KEY could be rejected with ER_TOO_BIG_ROWSIZE. Errors were returned similar to the following: ER_TOO_BIG_ROWSIZE(1118) (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format,…
fixUpdating a JSON relational duality view that deleted rows from a nested child base table could violate foreign-key constraints. JSON Duality View update processing now performs deletes first, in reverse binding order, before inserts and updates are executed. (Bug #39566804)
fixFixed an issue relating to JSON Schema validation. (Bug #39489024)
fixFixed an issue relating to processing JSON date values. (Bug #39361343)
fixFixed an issue relating to processing of nested arrays. (Bug #39255759)
fixFixed an issue relating to metadata validation. (Bug #39255734)
fixJSON_VALUE() with RETURNING DATETIME and a DEFAULT value could return an invalid constant date when the expression was used in a DATE context, silently affecting predicates and joins. The datetime value is now extracted before narrowing to a date. (Bug #120788, Bug #39649893)
fixmysql_tzinfo_to_sql generated unnecessary warnings. For example: Warning: Unable to load '/usr/share/zoneinfo//iso3166.tab' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo//leap-seconds.list' as time zone. Skipping it. Warning: Unable to load…
fixFixed an issue relating to subquery_to_derived. (Bug #39525738)
fixA query using the hypergraph optimizer with GROUP BY ... WITH ROLLUP on a constant expression and an empty USE INDEX FOR GROUP BY() hint could cause an assertion failure during optimization. As of this release, the optimizer recognizes that constant grouping requires no index ordering, allowing a…
fixFixed an issue relating to ROLLUP queries. (Bug #39501528)
fixFixed an issue related to error handling in aggregation of decimal data. (Bug #39474810)
fixSome temporal and geospatial expressions could trigger assertion failures. (Bug #39279682, Bug #39280411)
fixFixed an issue relating to error-handling. (Bug #39272322)
fixFixed an issue relating to user-variable handling. (Bug #39243027)
fixUnder certain circumstances, predicate-heavy queries using the hypergraph optimizer could trigger an assertion failure. (Bug #39181175)
fixFixed an issue relating to Common Table Expressions with subquery_to_derived enabled. (Bug #39179197)
fixFixed an issue in ExtractValue(). (Bug #39138426)
fixFixed an issue relating to string-to-temporal SQL expression evaluation. (Bug #39135197)
fixComplex queries using the hypergraph optimizer could spend unnecessary planning time repeatedly checking for a secondary-engine row-count hook, even when no secondary engine was installed. The optimizer now caches this hook lookup once per query, reducing planning overhead. (Bug #39015463)
fixOpening a table after updating its histogram could trigger an assertion failure because metadata locks for histograms were released incorrectly. Histogram metadata locks are now released only for the table currently being opened. (Bug #38940484)
fixFixed an issue relating to dynamic scan execution. Our thanks to Mengchu Shi and the team from Alibaba for the contribution. (Bug #38657550)
fixQueries which used BETWEEN with constant bounds could show an unnecessary filter operation above an otherwise exact index range scan when using the hypergraph optimizer. As of this release, the optimizer recognizes these range conditions as exact and removes the redundant filter step. (Bug…
fixQueries involving materialized derived tables could choose an index-lookup plan even when the cost of building the temporary index outweighed its benefit. As of this release, the hypergraph optimizer includes temporary-index build cost when evaluating these plans, improving plan selection for…
fixSELECT DISTINCT ... LIMIT queries, which used materialization-based duplicate removal, could process all distinct rows before applying the limit, causing performance degradation when only a small number of unique rows was requested. The hypergraph optimizer now passes the query limit to duplicate…
breakingAs of this release, MySQL no longer supports Enterprise Linux 7 (and associated glibc 2.17 generic).
+60 more items in the release notes
securityThis release is a Critical Security Patch Update. See Oracle Critical Security Patch Update Advisory - June 2026 for more information.
fixDropping a database is now possible even if its corresponding directory is missing from the file system, maintaining a consistent state for the database. (Bug #38711166)
fixGenerated Invisible Primary Keys (GIPK) were added to tables even when UNIQUE NOT NULL keys existed, when sql_generate_invisible_primary_key=ON. If the unique key was auto-incremented, GIPK creation failed. As of this release, UNIQUE NOT NULL keys are treated as Primary Key-equivalent for CREATE…
fixApplying mysqlbinlog output failed while executing CREATE TABLE ... START TRANSACTION which were immediately followed by comments, preceded by #. Errors were returned similar to the following: ERROR 3977 (HY000) at line 117: Only BINLOG INSERT, COMMIT and ROLLBACK statements are allowed after…
fixIt was not possible to create tables with a Primary Key Equivalent if SQL_REQUIRE_PRIMARY_KEY was enabled. Errors were returned similar to the following: ERROR 3750 (HY000): Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set. Add a…
fixIt was not possible to drop columns, on a table with virtual columns, using LOCK=NONE. (Bug #83557, Bug #24962142)
fixFixed an issue related to processing certain gzip files. The MySQL Server has been updated to relax the .gz header checks, allowing ordinary gzip files to be processed. Errors were returned similar to the following: Invalid audit log file content (Bug #38980223)
fixFixed an issue related to the audit_log_prune_seconds system variable. You can now set audit_log_prune_seconds. Checks have been added to ensure audit_log_prune_seconds does not exceed a certain threshold based on other system variable values, including log_offload.log_analytics_schedule and…
featureA new feature has been introduced that rotates the audit log file based on elapsed time, controlled by the new variable audit_log.rotate_on_time. (WL #17213)
featureAudit Log now supports automatic recovery from invalid filter configurations, ensuring that the server can start even if an invalid filter is found in the table. With this update, if an invalid filter configuration is detected, it will be replaced in- memory at startup with a default filter that…
securityAuthentication now supports PBKDF2 storage format with Caching_sha2_password, providing enhanced security and flexibility. This update allows for the use of PBKDF2 with SHA512, enabling a smoother migration path from existing formats and ensuring even stronger security guarantees. With this…
fixThe included zlib library has been upgraded to version 1.3.2. (Bug #38987448)
fixMicrosoft Windows: On Windows, MySQL Configurator did not validate group names defined with --named-pipe-full-access-group. As of this release, an error is returned if the group does not exist. (Bug #38068986)
fixWhen altering a table's character set, the date and time data type columns are converted in both the data dictionary and SDI. However, the new collation_id in SDI did not match that of the Field object. As of this release, ALTER TABLE ... CONVERT TO CHARACTER SET does not alter the character set…
fixFixed an issue relating to the DEFAULT() function. (Bug #39057054)
featureA new variable, replica_allow_higher_version_source, has been introduced that lets you enable or disable replication from a higher version source into a lower version replica. (WL #17202)
fixInnoDB: Under certain circumstances, removing a record could require merging B-tree pages and updating their parent page. InnoDB could underestimate the size of index records, causing it to acquire page latches in an unsafe order and potentially deadlock with a concurrent B-tree search. InnoDB now…
fixInnoDB: Fixed an issue relating to data directory location detection. (Bug #38169053)
fixMemory usage during FTS index construction for large tables has been optimized. (Bug #39040226)
fixFixed an issue relating to multi-value indexes. (Bug #39040128)
fixFixed an issue in the parallel reader. (Bug #39033858)
fixdict_sdi_create_idx_in_mem function added columns in a different order than expected, with the compressed_len and uncompressed_len fields swapped. (Bug #38810801)
fixUnder certain circumstances, running CREATE INDEX with a high value for --innodb_parallel_read_threads could cause the disk space to fill up, leading to disk space exhaustion. (Bug #38370155)
fixFixed an issue related to TRUNCATE TABLE. (Bug #38169053)
fixUnder certain circumstances, if the cgroups memory limit was set to a very high value, and --innodb-dedicated-server=ON, MySQL could fail to start. (Bug #37944614)
fixUnder certain circumstances, when calculating the maximum possible index record size, an assertion failure could occur. (Bug #85060, Bug #25579578)
fixFixed an issue relating to processing of JSON files. (Bug #39000847)
fixUsing the monthname function within a JSON scope resulted in an assertion error. Errors were returned similar to the following: Assertion `mtime.time_type == MYSQL_TIMESTAMP_DATE in JSON (Bug #38980997)
fixFixed an issue relating to optimized prepared DELETE and UPDATE statements. (Bug #39071552)
breakingUnder certain circumstances, find_in_set() could return incorrect results. The optimization which caused this has been removed. Our thanks to Jingqi Tian for the contribution. (Bug #119995, Bug #39056621)
securityMySQL Enterprise Edition 9.7.0 introduces dynamic data masking policies. These policies enable masking at the column level in the base table, enabling least-privilege access. The following SQL statements are added: The following SQL statements are updated to support masking policies: The following…
securityCREATE MASKING POLICY
securityDROP MASKING POLICY
securitySHOW CREATE MASKING POLICY
securityCREATE TABLE
securityALTER TABLE ... ADD COLUMN
securityALTER TABLE ... ALTER COLUMN
securityCURRENT_ROLE_IN(role1,role2,...): supports a comma-separated list of roles.
securityCURRENT_USER_IN(user1,user2,...): supports a comma-separated list of usernames.
featureX Protocol now supports PBKDF2 storage format with Caching_sha2_password. (Bug #38879953)
featureForeign key CASCADE and SET NULL actions performed by SQL-layer foreign key handling can now activate BEFORE and AFTER triggers on affected child rows. Enable this behavior for a session by setting the new enable_cascade_triggers system variable to ON. The default is OFF. Cascade-induced triggers…
+52 more items in the release notes
fixUpdated the audit_log_rotate_on_size system variable to require the AUDIT_ADMIN privilege for modification. (Bug #38620615)
featureMySQL now supports a more modular and efficient auditing system with the introduction of the Audit Log component. This update splits the monolithic Audit Log software into smaller, more manageable components, encapsulated into MySQL components, making it easier to install, manage, and maintain.…
fixMySQL Server's clang-tidy configuration now consistently disables all brace checks, including hicpp-braces-around-statements, to prevent duplicate diagnostics. (Bug #38601902)
breakingA number of unused symbols were removed from the code base. (Bug #38557463)
fixThe cmake macro MYSQL_CHECK_PROTOBUF did not properly handle multiple calls when using system protobuf. Errors were returned similar to the following: ADD_LIBRARY cannot create imported target "ext::libprotobuf" because another target with the same name already exists. (Bug #38417986)
fixThe mysqlx_port server variable was not persisted in the my.ini file when set through the Type and Networking configuration page. (Bug #38728671)
fixMySQL Configurator treated single-quotes (') as part of the password. The configurator now correctly handles quoted passwords by removing any quotes, double quotes, or backticks from the beginning and end of the password. (Bug #38069029)
fixServer file permissions were not applied as specified with --server-file-permissions-access. Full access was granted regardless of the value defined. (Bug #38068994)
fixslow-query-log-file could be used even if the slow query log was not enabled. (Bug #38068822)
fixIt was possible to set the --general-log-file CLI option when the general log was disabled. As of this release, an error is returned. (Bug #38068775)
fixopen-win-firewall could be used when TCP/IP connections were disabled. As of this release, --open-win-firewall can only be used when TCP/IP connections are enabled. (Bug #38068699)
fixUpdating the password with MySQL Configurator took a long time. (Bug #37459271)
fixA number of issues were corrected in the Server API documentation. Our thanks to Daniël van Eeden for the contribution. (Bug #114671, Bug #117516, Bug #37329988, Bug #37615382, Bug #36526371)
breakingInnoDB: InnoDB redo logging error messages now include the current LSN and redo log capacity information. A new warning code ER_IB_WRN_REDO_DISABLED_INFO is added which includes the current LSN. A new error code ER_IB_MSG_LOG_WRITER_WAIT_ON_NEW_LOG_FILE_INFO is added to include the current log…
fixInnoDB: If an XA PREPARED transaction existed during a server shutdown or crash, restarting the server with a non-zero --innodb-force-recovery value caused InnoDB to incorrectly change the transaction state from PREPARED to ACTIVE. This could lead to issues ranging from assertion failures to…
fixInnoDB: InnoDB now generates unique rowid values in tables without primary keys more efficiently. (Bug #13395168)
breakingInnoDB: The field fk_max_recusive_level in dict_table_t struct is no longer used and has been removed. Our thanks to Xiaocong Ding for the contribution. (Bug #119063, Bug #38492574)
fixInnoDB: If the server closed during transaction commit, transactions in an already committed state could remain in the undo log. If the transaction is already committed, it is cleared from trx_sys->rw_trx_list during recovery, but is not cleared from active_tw_trxs of the trx_sys->shards. This…
fixInnoDB: When selecting blob data after a small partial update, incorrect results may be returned due to inconsistencies in the Multi-Version Concurrency Control (MVCC) for blob objects. (Bug #114138, Bug #36342348)
fixInnoDB: Concurrent execution of FLUSH TABLE FOR EXPORT with DROP TABLE and DML operations could result in a deadlock. (Bug #110485, Bug #35221441)
fixFixed an issue related to bulk inserts. (Bug #38208188)
featureMySQL Server now supports a new startup option, container_aware, which controls the server's ability to discover and adhere to CPU and memory resource limits set by a container. (WL #16937)
fixGraalVM performance metrics are now available on Windows. (Bug #38498718)
fixThe SHOW CREATE LIBRARY command generated HEX representations of binary libraries on x86_64 architectures with FFFFFF patterns before each byte with the high bit set. Our thanks to Akshat Nehra and the team at Amazon for the contribution. (Bug #118927, Bug #38458235)
fixThe table IDs reported in the I_S views for JSON Duality Views differed from those reported by ORACLE DB due to differences in calculation order, leading to inconsistent REFERENCED_TABLE_ID values when multiple Content_tree_nodes referred to the same base table. (Bug #38624596)
featureOption Tracker now supports MySQL Shell and MySQL Shell for VS Code. The following status variables were added: The following system variable was added: See Option Tracker Component. (WL #16659, WL #17000)
fixFixed an issue relating to Common Table Expressions (CTE). (Bug #38573285)
fixUsing the coalesce or any_value functions with specific JSON operations, such as json_search and json_remove, could cause an assertion failure. (Bug #38549573)
fixNegative year values were accepted as valid datetime values by one method, but not by another. Negative year values are now always reported as errors. (Bug #38487373)
fixFixed issues relating to executing specific SELECT queries. (Bug #38465147, Bug #38465178)
fixFixed an issue related to executing specific SQL queries. (Bug #38448700)
fixFixed an issue relating to SHOW CREATE TABLE. (Bug #38298692)
fixAs of this release, GROUPING() is permitted in queries without ROLLUP. (Bug #38168051)
fixQueries which used REGEXP took longer to execute as prepared statements than as direct queries. (Bug #114056, Bug #36326728)
featureMySQL Server now supports a new GTID set data structure, providing a simpler, more modern, and efficient library for handling Global Transaction IDs. This implementation replaces the existing library, offering improved maintainability and performance. (WL #16076)
securityImportant Change: MySQL now supports enhanced security and flexibility with the relocation of MD5() and SHA1() SQL functions to a separate component, allowing for greater control over deprecated hashing algorithms and improved compliance with security standards. You can install the classic_hashing…
securityFixed an issue relating to authentication. (Bug #118447, Bug #38077617)
securityThe error message returned when attempting to create a user with an existing user name was unclear. (Bug #28331, Bug #11746738)
featureImportant Change: In previous releases, Foreign Key constraints and cascade operations were handled by the InnoDB storage engine. As of this release, they are handled by the SQL layer of the MySQL Server. This change allows for more comprehensive binary logs and improved analytics. This change is…
featureThe bundled version of opentelemetry-cpp was upgraded to version 1.23.0. (Bug #38483354)
+50 more items in the release notes
featureMySQL now supports enhanced role management with the introduction of a new option, activate_mandatory_roles. If activate_all_roles_on_login is enabled, activate_mandatory_roles is ignored, and both mandatory and granted roles are activated. If activate_all_roles_on_login is disabled and…
fixFixed an issue related to audit log strategy. (Bug #38223011)
fixImproved performance related to adding multiple general_sql_command.str fields to an Enterprise Audit filter. (Bug #38053242)
fixFixed an issue related to audit_log_read performance. (Bug #36281295, Bug #38275868)
securitySecurity Enhancement: The default value of caching_sha2_password_digest_rounds is increased to 10,000. (WL #16974)
fixUnder certain circumstances, the keyring component could not read the configuration file if the configured data directory path was shorter than the default path. (Bug #38078884)
fixGeneral-Purpose Keyring Functions did not handle invalid parameters correctly. (Bug #38055488)
deprecatedMySQL now provides an INTERPRET_UTF8_AS_UTF8MB4 SQL mode that controls whether the deprecated utf8 character set and utf8_* collation aliases in SQL statements are interpreted as utf8mb3 or utf8mb4. The mode is disabled by default, preserving the previous utf8mb3 interpretation. When enabled, utf8…
fixSolaris: Clang and GCC now can be used for compiling MySQL on Solaris. (Bug #30562248)
fixOpenSSL 3 is now used on Solaris. (Bug #38193362)
fixUpgraded the bundled googletest library to version 1.17. (Bug #38152017)
fixUpgraded the bundled libbacktrace library to the latest version (April 2025). (Bug #38151970)
fixMySQL Server now bundles libzip and provides CMAKE options to choose between the bundled or system library when compiling the server. (Bug #38109824)
fixThe minimum required version of CMAKE is now 3.17.5, for supported platforms. (Bug #38090672)
fixCompiler warnings were logged when building MySQL Server with GCC 15. (Bug #37721464)
fixThe MYSQL_OPTION.OPTION_USAGE.OPTION_NAME field used a different character set than PERFORMANCE_SCHEMA.MYSQL_OPTION.OPTION_NAME. As of this release, the CLUSTER_ID, SERVER_ID, and OPTION_NAME fields of MYSQL_OPTION.OPTION_USAGE use utf8mb4_general_ci instead of ascii. (Bug #38230424)
fixThe sql_errno() method in the mysql_command_error_info service returned 0 when a command failed, instead of the appropriate error code. (Bug #38178087)
fixThe server plugin system variable flag PLUGIN_VAR_NOSYSVAR was not processed properly. Variables defined with this flag were displayed when they should be hidden. (Bug #37654916)
fixErrors were not handled correctly when using the keyring UDF plugin and executing specific queries with the keyring_key_generate function. (Bug #37501458)
featureTelemetry component introduces a secret decoding service. This enables you to create your own secret-decoding service for OpenTelemetry. The following system and status variables were added: (WL #16647)
fixMicrosoft Windows: If the MySQL Server was configured as a process, not as a service, the Configurator's Starting the server step could take a long time to complete due to delays in detecting when the server was ready to receive connections. (Bug #38068649)
fixMicrosoft Windows: Shared Memory connections, --enable-shared-memory=true, failed when they were the only enabled protocol during server configuration. (Bug #38068619)
fixMicrosoft Windows: It was not possible to create usernames with escaped characters, using single or double quotes, during new server configuration. (Bug #37459624)
fixMicrosoft Windows: When upgrading, for example from version 9.1.0 to 9.2.0, using a non-default port, such as 3307, messages could be generated indicating a connection issue to port 3306, even if the server configuration is correct and the upgrade is successful. Errors were returned similar to the…
fixMicrosoft Windows: The CLI help for MySQL Configurator now correctly displays the list of supported values for configurable server options. (Bug #37458648)
fixconfig-type Configurator CLI option did not accept any values. (Bug #38068684)
featureConnection control now supports exempting unknown users from delay criteria, introducing a new system variable component_connection_control.exempt_unknown_users that allows administrators to configure whether failed connection attempts without user credentials should be penalized. This enhancement…
deprecatedThe group_replication_allow_local_lower_version_join system variable, deprecated in MySQL 8.4.0, has now been removed. (WL #16019)
deprecatedThe replica_parallel_type system variable, deprecated in MySQL 8.0.29, has now been removed. (WL #13955)
deprecatedThe SCRAM-SHA-1 authentication method for SASL LDAP authentication is now deprecated, and subject to removal in a future version of MySQL. You are encouraged to use SCRAM-SHA-256 instead. As part of this work, the default value for the authentication_ldap_sasl_auth_method_name system variable has…
deprecatedThe following deprecated plugins are removed in this release: (WL #16801)
deprecatedsemisync_master replaced by semisync_source.
deprecatedsemisync_slave replaced by semisync_replica.
fixFixed an issue related to executing certain UPDATE statements. (Bug #37590580) References: This issue is a regression of: Bug #31562881.
fixInnoDB: The dict_stats_analyze_index() function could discard optimal index-based access paths, resulting in suboptimal performance for large tables when empty index statistics are read concurrently or an error leads to empty index statistics. Our thanks to Casa Zang and the Tencent team for the…
fixCreating a thread for parallel scan may fail, resulting in assertion failures when it fell back to single-thread mode. Errors were returned similar to the following: Assertion failure: row0pread.h:306:active >= n_threads (Bug #38325137)
deprecatedThe keyring_okv plugin is deprecated and replaced by the keyring_kmip component, enabling secure communication with Key Management Interoperability Protocol (KMIP) 1.1-compatible products such as Oracle Key Vault, Gemalto SafeNet KeySecure Appliance, Townsend Alliance Key Manager, and Entrust…
featureThis version includes the MySQL Diagnostic Monitor (mysqldm), a new client tool designed to collect server diagnostic information. To supply to Oracle Support for efficient issue resolution, for example. The mysqldm client tool runs a predefined set of queries on the server, storing the results in…
securityMySQL Replication supports enhanced security features with encryption now being enabled for all replication connections by default. With this configuration change, the default value of the SOURCE_SSL option in the CHANGE REPLICATION SOURCE TO Statement has been changed to 1, the default value of…
deprecatedMicrosoft Windows: MySQL Configurator command-line option names and aliases have been revised to more clearly indicate their purpose. Multiword options accept either hyphens or underscores as separators, but the separator styles cannot be mixed within one option name. Deprecated names and aliases…
+74 more items in the release notes
fixThe LDAP SASL authentication plugin could not be installed successfully when the Option Tracker component was already installed. (Bug #37983282)
breakingImportant Change: IFNULL() used in a LIKE clause raised ER_CANT_AGGREGATE_2COLLATIONS. This was due to the fact that IFNULL() returns a binary collation and the collation derivation NONE, but NONE was not allowed in this context, leading to the error. We solve this problem by making a slight…
fixCREATE TABLE with a generated column expression, such as a CHECK constraint, which referenced a non-ASCII identifier caused a syntax error if the current client character set was not compatible with UTF-8 (for example, GBK). (Bug #30453221)
fixGroup Replication: Defining TASK_EVENT_TRACE in gcs_profile.in broke the build of GCS/XCOM in MySQL Server's Group Replication GCS component, returning errors similar to member reference type 'connection_descriptor *' is a pointer; did you mean to use '->'?. (Bug #38042851)
fixmacOS: Aligned the buffer used for reading status variables. This fixes a potential issue with MacOS/M1 platforms.
fixUpgraded the bundled libcurl library to version 8.14.1. (Bug #38042758)
fixMySQL Server now supports CMake 4, ensuring compatibility with future CMake versions where support for versions prior to 3.10 is expected to be discontinued. (Bug #38027636)
fixUse -DWITH_PROTOBUF=system for relevant .proto files, which can reduce build times. (Bug #38022751)
breakingRemoved a warning in gcs_xcom_networking.cc. (Bug #38021787)
fixThe system bzip2 library is now located by cmake before linking with -lbz2. (Bug #38005363)
breakingMySQL Server now requires GCC version 11 or later to compile. As part of this change, support for ARM systems using RHEL7 is removed in this release, due to the lack of availability of GCC 11 on that platform. (Bug #38004285)
breakingRemoved workaround for old versions of CMake. Note The minimum version of CMake supported for building MySQL is 3.14.6. (Bug #37901122)
fixThe included ICU library has been upgraded to version 77-1. (Bug #37870791)
fixThe included zstd library has been upgraded to version 1.5.7. (Bug #37869972)
deprecatedWarnings raised by Clang 20 for non-trivially copyable types, deprecated literal operators, and incorrect main function declarations are no longer generated. (Bug #37785251)
breakingRemoved warnings observed when compiling the server with Clang 20. (Bug #37785251)
fixDisabled clang::musttail when building with GCC 15. (Bug #37776018)
fixWorked around an issue with list handling in certain older versions of CMake. (Bug #37709169)
fixSome compiler features tests did not pass when building with -fprofile-use. (Bug #37707556)
fixOn RHEL 9, MySQL Server is now built using GCC 14. (Bug #37702396)
fixThe version of Boost needed to build MySQL has been raised from 1.85.0 to 1.87.0. (Bug #37403602)
fixThe linker tried to use the empty Cmake variable ${ICU_LIBRARIES}, even though the correct library (ext::icu) was already linked elsewhere. (Bug #36524167)
fixCompiling on macOS looked explicitly for [email protected] but now looks for the generic openssl symlink instead, to allow for openssl@3. (Bug #35468370)
deprecatedOn MacOS, silenced deprecation warnings generated by Xcode 14; this includes suggestions to use snprintf(3) instead of sprintf(3), and warnings about possible loss of precision when converting from 64-bit to 32-bit integers. (Bug #34776172)
deprecatedMicrosoft Windows: As MySQL Enterprise Edition 9.4.0 includes a new The MySQL Enterprise Firewall Component), intended to be a replacement for the now deprecated MySQL Enterprise Firewall plugin, the MySQL Configurator now supports enabling the firewall component and upgrading to it from the…
featureFor new server configurations: Users can choose to enable the new firewall component.
featureFor server reconfigurations: Users can choose to disable the firewall, enable the new firewall component (if the firewall was not enabled before), keep the old firewall plugin, or upgrade the firewall plugin to the firewall component.
deprecatedAs part of ongoing work to transition from MySQL plugins to MySQL components, the API used to write MySQL plugins is now deprecated and subject to removal in a future version of MySQL. This change has the following effects: Keyring Components Versus Keyring Plugins, provides a summary of the…
deprecatedThe MySQL server's --early-plugin-load option is deprecated. Starting the server with this option now raises a deprecation warning.
deprecatedA deprecation warning is now issued whenever a keyring plugin is loaded.
deprecatedThe system variable temptable_use_mmap, deprecated in version 8.0.26, is removed in this version. (WL #16745)
deprecatedThe SQL functions MD5() and SHA1() are deprecated as of this release and scheduled for removal in a future release. (WL #16955)
deprecatedPackaging: This release includes a MySQL Enterprise Firewall component (see The MySQL Enterprise Firewall Component) intended to replace the firewall plugin, which is now deprecated and thus subject to removal in a future version of MySQL. The component implements most of the plugin's…
featureJavaScript programs using the MySQL Multilingual Engine component now supports libraries written in WebAssembly (see https://webassembly.org/). Such a library can be created using CREATE LIBRARY ... LANGUAGE WASM and the hexadecimal or base64-encoded representation of a compiled WebAssembly…
featureMySQL now supports JSON duality views, which provide a way to expose data stored in relational tables as JSON documents. Such views can be created, altered, dropped, and viewed using CREATE JSON DUALITY VIEW and ALTER JSON DUALITY VIEW (both implemented in this release); DROP VIEW and SHOW CREATE…
featureImportant Change: Added the mysql client --commands option, which enables or disables most mysql client commands. This option is disabled by default. To enable it, start the client with --commands or --commands=ON. For a complete list of all commands affected by this option, and additional…
featureInnoDB: To improve debugging, the buf_page_t and buf_block_t structure's metadata is now printed to the error log. (Bug #35115629) References: See also: Bug #35115601.
featureGroup Replication: Added the error ER_GRP_RPL_APPLIER_THD_KILLED, to distinguish when the applier thread has been terminated using SQL KILL, rather than stopped by an error. (Bug #37764717)
featureIncreased the historical 1024-byte limit when printing the current query during signal handling to 1073741824 (1024 * 1024 * 1024). (Bug #37603354)
featureBinary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.14.1. (Bug #37389565)
+95 more items in the release notes
See how far your stack has drifted from upstream. Release data from vendors’ own sources · feed under CC BY 4.0 · Code under AGPL-3.0 Settings Feed status