MySQL 8.1.0 → 26.10.0
40 releases · 36 breaking changes · 58 security fixes · 31 advisories fixed
58security36breaking109deprecated113feature573fix
Vulnerabilities fixed by this upgrade
- 6.5 CVE-2024-21171 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.37 and prior and 8.4.0 and prior. Easily exploitable vulnera…
- 2.2 CVE-2024-21101 Vulnerability in the MySQL Cluster product of Oracle MySQL (component: Cluster: General). Supported versions that are affected are 7.5.33 and prior, 7.6.29 and prior, 8.0.36 and prior and 8.3.0 a…
- 4.9 CVE-2024-21102 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Thread Pooling). Supported versions that are affected are 8.0.36 and prior and 8.3.0 and prior. Easily exploitable vu…
- 4.9 CVE-2024-21096 Vulnerability in the MySQL Server product of Oracle MySQL (component: Client: mysqldump). Supported versions that are affected are 8.0.36 and prior and 8.3.0 and prior. Difficult to exploit vulne…
- 4.9 CVE-2024-21087 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Group Replication Plugin). Supported versions that are affected are 8.0.36 and prior and 8.3.0 and prior. Easily expl…
- 4.9 CVE-2024-21069 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: DDL). Supported versions that are affected are 8.0.36 and prior and 8.3.0 and prior. Easily exploitable vulnerability…
- 4.9 CVE-2024-21061 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Audit Plug-in). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vul…
- 4.9 CVE-2024-21062 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.36 and prior and 8.3.0 and prior. Easily exploitable vulnera…
- 4.9 CVE-2024-21047 Vulnerability in the MySQL Server product of Oracle MySQL (component: InnoDB). Supported versions that are affected are 8.0.36 and prior and 8.3.0 and prior. Easily exploitable vulnerability allo…
- 4.9 CVE-2024-20981 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: DDL). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulnerability…
- 6.5 CVE-2024-20985 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: UDF). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulnerability…
- 5.5 CVE-2024-20969 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: DDL). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulnerability…
- 4.9 CVE-2024-20971 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulnera…
- 6.5 CVE-2024-20973 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulnera…
- 6.5 CVE-2024-20975 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.2.0 and prior. Easily exploitable vulnerability allows low priv…
- 6.5 CVE-2024-20977 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulnera…
- 6.5 CVE-2024-20961 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulnera…
- 6.5 CVE-2024-20963 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Security: Encryption). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploita…
- 4.9 CVE-2024-20965 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulnera…
- 5.5 CVE-2024-20967 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Replication). Supported versions that are affected are 8.0.35 and prior and 8.2.0 and prior. Easily exploitable vulne…
- 4.9 CVE-2023-22103 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability all…
- 4.9 CVE-2023-22114 Vulnerability in the MySQL Server product of Oracle MySQL (component: InnoDB). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability allows high pr…
- 6.5 CVE-2023-22095 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). The supported version that is affected is 8.1.0. Easily exploitable vulnerability allows low privileged a…
- 4.9 CVE-2023-22097 Vulnerability in the MySQL Server product of Oracle MySQL (component: InnoDB). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability allows high pr…
- 4.9 CVE-2023-22078 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability all…
- 4.9 CVE-2023-22084 Vulnerability in the MySQL Server product of Oracle MySQL (component: InnoDB). Supported versions that are affected are 5.7.43 and prior, 8.0.34 and prior and 8.1.0. Easily exploitable vulnerabil…
- 4.9 CVE-2023-22032 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability all…
- 6.5 CVE-2023-22059 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability all…
- 4.9 CVE-2023-22066 Vulnerability in the MySQL Server product of Oracle MySQL (component: InnoDB). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability allows high pr…
- 4.9 CVE-2023-22068 Vulnerability in the MySQL Server product of Oracle MySQL (component: InnoDB). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability allows high pr…
- 4.9 CVE-2023-22070 Vulnerability in the MySQL Server product of Oracle MySQL (component: Server: Optimizer). Supported versions that are affected are 8.0.34 and prior and 8.1.0. Easily exploitable vulnerability all…
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
- breaking Removed the unused file strings/utr11-dump.cc. (Bug #37549844) in 9.3.0
- breaking Removed extraneous pipe characters (|) from the first example. in 9.3.0
- breaking macOS: Removed obsolete CMake code from MacOS builds. (Bug #37258036) in 9.2.0
- breaking macOS: Removed warnings of the form ld: warning: ignoring duplicate libraries and warnings specific to xcodebuild. (Bug #37065301) in 9.2.0
- breaking Microsoft Windows: Removed compiler warnings issued when building MySQL with Visual Studio 2022. (Bug #113870, Bug #36256477) in 9.2.0
- breaking Removed or fixed issues in a number of copyright header files. (Bug #37238155) in 9.2.0
- breaking Removed a maybe-uninitialized error found in sql/item.cc when building MySQL with GCC 14. (Bug #37157201) in 9.2.0
- breaking Removed an error in mysql_prepare_create_table() (in the file sql/sql_table.cc) found when compiling MySQL with XCode 16. (Bug #37068527) in 9.2.0
- breaking When removal of the database directory as part of DROP DATABASE was unsuccessful due to a file system error or an unexpected shutdown, the transaction containing DROP DATABASE was not always rolled back; manual intervention was required in such cases to rectify the problem. in 9.1.0
- breaking When compiling MySQL, we no longer check for Fedora versions 28 or 34, since these have reached end of life and are no longer supported. (Bug #36819263) in 9.1.0
- breaking Support for AES ECB, which is insecure, has been removed from all MySQL keyring-related components. (Bug #36749277) in 9.1.0
- breaking macOS: The Xcode version of zlib was removed from the default list of system libraries to use when configuring with -DWITH_SYSTEM_LIBS=ON. (Bug #36537593) in 9.0.0
- breaking Removed linker warnings raised when compiling code that used RapidJSON. (Bug #36322583) in 9.0.0
- breaking Removed warnings raised in sql/statement/ed_connection.cc when building on Ubuntu 23.04. (Bug #114436, Bug #36428465) in 9.0.0
- breaking Important Change: ER_SUBQUERY_NO_1_ROW has been removed from the list of errors which are ignored by statements which include the IGNORE keyword. This has been done for the following reasons: Following an upgrade to this release, this change can make an UPDATE, DELETE, or INSERT statement which… in 9.0.0
- breaking As of this release, MySQL no longer supports Enterprise Linux 7 (and associated glibc 2.17 generic). in 8.4.11
- 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 8.4.8
- breaking macOS: Removed obsolete CMake code from MacOS builds. (Bug #37258036) in 8.4.4
- breaking macOS: Removed warnings of the form ld: warning: ignoring duplicate libraries and warnings specific to xcodebuild. (Bug #37065301) in 8.4.4
- breaking Removed a maybe-uninitialized error found in sql/item.cc when building MySQL with GCC 14. (Bug #37157201) in 8.4.4
- breaking Removed an error in mysql_prepare_create_table() (in the file sql/sql_table.cc) found when compiling MySQL with XCode 16. (Bug #37068527) in 8.4.4
- breaking macOS: The Xcode version of zlib was removed from the default list of system libraries to use when configuring with -DWITH_SYSTEM_LIBS=ON. (Bug #36537593) in 8.4.1
- breaking Removed warnings raised in sql/statement/ed_connection.cc when building on Ubuntu 23.04. (Bug #114436, Bug #36428465) in 8.4.1
- breaking mysql_refresh(): Reimplemented using mysql_real_query() to execute FLUSH statements in place of COM_REFRESH, which was removed in MySQL 8.3. in 8.4.0
- breaking The libevent library has been removed. (Bug #36357190) in 8.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
- security This release introduces a MySQL component, component_keyring_hashicorp, which takes the place of the HashiCorp Vault keyring plugin; that plugin and its associated system variables are now deprecated (and subject to removal in a future version of MySQL). Like the plugin, the component allows… in 9.3.0
- security Added CONTRIBUTING.md and SECURITY.md files to the MySQL sources to conform to Oracle's Open Source guidelines. (Bug #36998165) in 9.1.0
- security Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.9.1. Important issues fixed in curl version 8.9.1 are described at https://curl.se/docs/security.html. (Bug #36967379, Bug #36955197) in 9.1.0
- security If the view already exists, the statement appears to succeed but does not change the view definition, and yields a warning, as shown here: mysql> CREATE VIEW v1 AS SELECT c1, c3 FROM t1; Query OK, 0 rows affected (0.01 sec) mysql> CREATE VIEW v1 AS SELECT c2 FROM t1; ERROR 1050 (42S01): Table 'v1'… in 9.1.0
- security Fixed an issue relating to server-supplied RSA public-key handling during client-side SHA-2 authentication. (Bug #39883040) in 8.4.13
- security Fixed an issue relating to client parsing of WebAuthn assertion challenge packets. (Bug #39740347) in 8.4.13
- security Fixed an issue relating to nullable numeric arguments supplied to audit_api_message_emit_udf(). (Bug #39633136) in 8.4.13
- security Fixed an issue relating to authentication. (Bug #118447, Bug #38077617) in 8.4.8
- security Added CONTRIBUTING.md and SECURITY.md files to the MySQL sources to conform to Oracle's Open Source guidelines. (Bug #36998165) in 8.4.3
- security Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.9.1. Important issues fixed in curl version 8.9.1 are described at https://curl.se/docs/security.html. (Bug #36967379, Bug #36955197) in 8.4.3
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
- deprecated Group Replication: The OpenSSL Engine interface is deprecated, and is no longer being included in OpenSSL v3 main packages by some Linux distributions, including Fedora. To avoid build issues, the usage of the OpenSSL Engine interface by the Group Communication System (GCS) is now restricted to… in 9.3.0
- deprecated NDB Cluster: The --restore-privilege-tables option for ndb_restore, which was deprecated in NDB 8.0.16, has now been removed. (Bug #36298807) in 9.3.0
- deprecated Replication: The replica_parallel_workers server system variable can no longer be set to 0; the minimum permitted value is now 1. (WL #13957) in 9.3.0
- deprecated The system variable innodb_undo_tablespaces, deprecated in MySQL 8.0.14, has been removed. (WL #16746) in 9.3.0
- deprecated The system variables innodb_log_file_size and innodb_log_files_in_group, deprecated in MySQL 8.0.30, have been removed. (WL #16743) in 9.3.0
- deprecated The Version Tokens plugin, which was deprecated in MySQL 9.2.0, has been removed in this release. (WL #16614) in 9.3.0
- deprecated This release adds the CREATE_SPATIAL_REFERENCE_SYSTEM privilege, which allows the user to execute any of the statements CREATE SPATIAL REFERENCE SYSTEM, CREATE OR REPLACE SPATIAL REFERENCE SYSTEM, and DROP SPATIAL REFERENCE SYSTEM. Use of the SUPER privilege for this purpose should now be… in 9.2.0
- deprecated Implemented the standards-compliant my_char_traits<unsigned char> for use as a drop-in replacement for std::char_traits<unsigned char>, which was deprecated in Clang 18 and removed in Clang 19. (Bug #37273525, Bug #37785339) in 9.2.0
- deprecated The entries present in the mysql_option.option_usage table depended on whether the Option Tracker was installed before or after the Audit Log. See Option Tracker Component, and MySQL Enterprise Audit Plugin (Deprecated), for more information. (Bug #37037438) in 9.2.0
- deprecated This release adds a Connection Control component (component_connection_control) intended to replace the Connection Control plugins (see Connection Control Plugins). A single component takes the place of both plugins, which are now deprecated and subject to removal in a future version of MySQL. One… in 9.2.0
- deprecated Microsoft Windows: On Windows, MySQL Configurator no longer executes the deprecated FLUSH PRIVILEGES statement. (Bug #37170330) in 9.2.0
- deprecated The FLUSH PRIVILEGES statement is now deprecated, and causes a warning when issued. You should expect this statement to be removed in a future MySQL release. The following constructs are also deprecated, and now cause a warning when used: The features listed here do not cause any warnings but… in 9.2.0
- deprecated The FLUSH_PRIVILEGES privilege, and granting of this privilege in 9.2.0
- deprecated mysqladmin flush-privileges in 9.2.0
- deprecated mysqladmin reload. in 9.2.0
- deprecated Flushing of privileges by SIGHUP in 9.2.0
- deprecated Flushing of the caching_sha2 cache by FLUSH PRIVILEGES in 9.2.0
- deprecated Flushing of privileges by mysqladmin refresh in 9.2.0
- deprecated The Version Tokens plugin is now deprecated, and subject to removal in a future MySQL release. The following related features are also now deprecated, and raise deprecation warnings whenever they are invoked: Attempting to install the version_tokens plugin—or to start the server when this plugin… in 9.2.0
- deprecated The functions version_tokens_delete(), version_tokens_edit(), version_tokens_lock_exclusive(), version_tokens_lock_shared(), version_tokens_set(), version_tokens_show(), and version_tokens_unlock() in 9.2.0
- deprecated The VERSION_TOKEN_ADMIN privilege in 9.2.0
- deprecated The version_tokens_session and version_tokens_session_number server system variables in 9.2.0
- deprecated This release introduces an Amazon Web Services keyring component (component_keyring_aws); this component supersedes the AWS keyring plugin (keyring_aws), which is now deprecated and thus subject to removal in a future version of MySQL. For more information about the AWS keyring component, see… in 9.1.0
- deprecated NDB Cluster APIs: Support for Node.js, which was deprecated in NDB Cluster 9.0, is removed in this release. (WL #16246) in 9.1.0
- deprecated The keyring_aws plugin is now deprecated, and subject to removal in a future version of MySQL. Users should migrate to the AWS keyring component, which is introduced in this release. For more information about the AWS keyring component, see Using the component_keyring_aws AWS Keyring Component.… in 9.1.0
- deprecated Replication: MySQL 9.0.0 deprecates transactions which update both transactional tables and nontransactional or noncomposable tables. Such a transaction now causes a deprecation warning to be written to both the client and the error log. Only the InnoDB and BLACKHOLE storage engines are… in 9.0.0
- deprecated InnoDB and BLACKHOLE in 9.0.0
- deprecated MyISAM and MERGE in 9.0.0
- deprecated performance_schema and any other storage engine in 9.0.0
- deprecated TempTable and any other storage engine in 9.0.0
- deprecated The mysql_native_password authentication plugin, deprecated in MySQL 8.0, has been removed, and the server now rejects mysql_native authentication requests from older client programs which do not have CLIENT_PLUGIN_AUTH capability. For backward compatibility, mysql_native_password remains… in 9.0.0
- deprecated The --mysql-native-password server option in 9.0.0
- deprecated The --mysql-native-password-proxy-users server option in 9.0.0
- deprecated The default_authentication_plugin server system variable in 9.0.0
- deprecated The MIN_VALUE and MAX_VALUE columns of the Performance Schema variables_info table are now deprecated, and subject to removal in a future version of MySQL. Instead, you should use the MIN_VALUE and MAX_VALUE columns of the variables_metadata table, which provide the same information. (WL #15585) in 9.0.0
- deprecated The variables_metadata table provides general information about system variables. This information includes the name, scope, type, range (where applicable), and description of each system variable recognized by the MySQL server. The MIN_VALUE and MAX_VALUE columns of this table are intended to… in 9.0.0
- deprecated The Information Schema tables TP_THREAD_GROUP_STATE, TP_THREAD_GROUP_STATS, and TP_THREAD_STATE were deprecated in MySQL 8.0.14. Accessing any of these tables now produces a warning; you should use the equivalent Performance Schema tables instead. For more information, see Performance Schema… in 9.0.0
- deprecated The following replication system variables are deprecated in this release and scheduled for removal in a later release: (WL #17300) in 8.4.11
- deprecated group_replication_communication_stack in 8.4.11
- deprecated group_replication_ip_allowlist in 8.4.11
- 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 8.4.7
- 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 8.4.6
- deprecated Group Replication: The OpenSSL Engine interface is deprecated, and is no longer being included in OpenSSL v3 main packages by some Linux distributions, including Fedora. To avoid build issues, the usage of the OpenSSL Engine interface by the Group Communication System (GCS) is now restricted to… in 8.4.5
- deprecated Implemented the standards-compliant my_char_traits<unsigned char> for use as a drop-in replacement for std::char_traits<unsigned char>, which was deprecated in Clang 18 and removed in Clang 19. (Bug #37273525, Bug #37785339) in 8.4.4
- deprecated The deprecation warning issued when authenticating with the mysql_native_password plugin is now issued only once. (Bug #35792948) in 8.4.1
- deprecated Important Change: The deprecated mysql_native_password authentication plugin is now disabled by default. It can be enabled by starting MySQL with the new --mysql-native-password=ON server option, or by adding mysql_native_password=ON to the [mysqld] section of your MySQL configuration file. For… in 8.4.0
- deprecated Partitioning: Silent omission of columns with index prefixes as part of a table's partitioning key was deprecated in MySQL 8.0.21, and generated a warning. In this release, the use of any such columns in the proposed partitioning key is now expressly disallowed, and causes the CREATE TABLE or… in 8.4.0
- deprecated Replication: Syntax for a number of features relating to MySQL Replication that was deprecated in previous versions of MySQL has now been removed. These features include aspects of SQL statement syntax as well as several system status variables in the MySQL server. These changes are detailed… in 8.4.0
- deprecated CHANGE REPLICATION SOURCE TO options removed: MASTER_AUTO_POSITION (SOURCE_AUTO_POSITION), MASTER_HOST (SOURCE_HOST), MASTER_BIND (SOURCE_BIND), MASTER_USER (SOURCE_USER), MASTER_PASSWORD (SOURCE_PASSWORD), MASTER_PORT (SOURCE_PORT), MASTER_CONNECT_RETRY (SOURCE_CONNECT_RETRY), MASTER_RETRY_COUNT… in 8.4.0
- deprecated START REPLICA options removed: MASTER_LOG_FILE (SOURCE_LOG_FILE) and MASTER_LOG_POS (SOURCE_LOG_POS). in 8.4.0
- deprecated Group Replication: The group_replication_allow_local_lower_version_join system variable is now deprecated, and setting it raises a warning (ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT). You should expect this variable to be removed in a future version of MySQL. Since there is no longer any reason to… in 8.4.0
- deprecated A number of server options and variables supported in previous versions of MySQL have been removed in this release. Attempting to set any of them in MySQL 8.4 raises an error. These options and variables are listed here: (Bug #36337893, WL #9677, WL #13965, WL #15461, WL #15839, WL #16056, WL… in 8.4.0
- deprecated binlog_transaction_dependency_tracking: Deprecated in MySQL 8.0.35 and MySQL 8.2.0. There are no plans to replace this variable or its functionality, which has been made internal to the server: Now, when multithreaded replicas are in use, the source mysqld uses always writesets to generate… in 8.4.0
- deprecated group_replication_recovery_complete_at: Deprecated in MySQL 8.0.34. Beginning with this release, the policy applied during the distributed recovery process is always to mark a new member online only after it has received, certified, and applied all transactions that took place before it joined the… in 8.4.0
- deprecated avoid_temporal_upgrade and show_old_temporals: Both deprecated in MySQL 5.6. Each of these variables no longer had any effect, and has been removed. There are no plans to replace either variable. in 8.4.0
- deprecated no-dd-upgrade: Deprecated in MySQL 8.0.16, now removed. Use --upgrade=NONE instead. in 8.4.0
- deprecated old and --new: Both deprecated in MySQL 8.0.35 and MySQL 8.2.0, and now removed. in 8.4.0
- deprecated language: This option was deprecated in MySQL 5.5, and has now been removed. in 8.4.0
- deprecated The --ssl, --skip-ssl, and --admin-ssl server options, as well as the have_ssl and have_openssl server system variables, were all deprecated in MySQL 8.0.26, and are all removed in this release. Use --tls-version and --admin-tls-version instead. in 8.4.0
- deprecated default_authentication_plugin: Deprecated in MySQL 8.0.27, and now removed. Use authentication_policy instead. You should also be aware that the syntax for setting the authentication_policy variable has changed; see its description in the Manual for more information. in 8.4.0
- deprecated In cases where an aliased table was referenced in EXPLAIN output, the table name was qualified with a schema name, which was not necessary and could result in confusion. These schema qualifications have been removed from the output. (Bug #36053664) in 8.4.0
- deprecated The unused INFORMATION_SCHEMA.TABLESPACES table, deprecated in MySQL 8.0.22, has now been removed. For InnoDB tables, the Information Schema INNODB_TABLESPACES and INNODB_DATAFILES tables provide tablespace metadata. (WL #14065) in 8.4.0
- deprecated LOW_PRIORITY used with LOCK TABLES ... WRITE had had no effect since MySQL 5.5, and was deprecated in MySQL 5.6. It is removed in this release; including LOW_PRIORITY in LOCK TABLES now causes a syntax error. (WL #16057) in 8.4.0
- deprecated Support for use of the AUTO_INCREMENT modifier with FLOAT and DOUBLE columns was deprecated in MySQL 8.0, and is now removed. Attempting to use these together in CREATE TABLE and ALTER TABLE statements now causes an Incorrect column specifier for column error (ER_WRONG_FIELD_SPEC). Important Prior… in 8.4.0
- deprecated The mysql_ssl_rsa_setup utility, which was deprecated in MySQL 8.0.34, is removed in this release. For MySQL distributions compiled using OpenSSL, the MySQL server can perform automatic generation of missing SSL and RSA files at startup. For more inforamtion, Creating SSL and RSA Certificates and… in 8.4.0
- deprecated This release removes support for the ENGINE clause from the following SQL statements: Other than in the exceptional cases listed previously, use of the ENGINE clause with ALTER TABLESPACE or DROP TABLESPACE causes the statement to be rejected with an error. ENGINE clauses for the ALTER TABLESPACE… in 8.4.0
- deprecated DROP TABLESPACE (all variants) in 8.4.0
- deprecated ALTER TABLESPACE ... DROP DATAFILE in 8.4.0
- deprecated All other variants of ALTER TABLESPACE, with the two exceptions listed here: in 8.4.0
- deprecated ALTER TABLESPACE ... ADD DATAFILE ENGINE={NDB|NDBCLUSTER} in 8.4.0
- deprecated ALTER UNDO TABLESPACE ... SET {ACTIVE|INACTIVE} ENGINE=INNODB in 8.4.0
- deprecated The SET_USER_ID privilege, deprecated in MySQL 8.2.0, has been removed in this release, and its use in GRANT statements now causes a syntax error. Use the SET_ANY_DEFINER and ALLOW_NONEXISTENT_DEFINER privileges instead. (WL #15875) in 8.4.0
- deprecated Removed the mysql_upgrade utility, which was deprecated in MySQL 8.0.16. (WL #16096) in 8.4.0
- deprecated Removed the deprecated mysqlpump utility along with its associated lz4_decompress and zlib_decompress helper utilities. Instead, use mysqldump or the MySQL Shell dump utilities. (WL #16096) in 8.4.0
- deprecated The following plugins have been removed. They are noted in the list provided here, along with any server system variables, CMake options, and other features associated with them which have also been removed: (WL #15937, WL #15938, WL #15939, WL #15941, WL #16140) in 8.4.0
- deprecated authentication_fido, authentication_fido_client: Use authentication_webauthn instead; see WebAuthn Pluggable Authentication. The authentication_fido_rp_id server system variable, mysql client --fido-register-factor option, and the -DWITH_FIDO CMake option have also been removed. in 8.4.0
- deprecated keyring_file: Use component_keyring_file instead; see Using the component_keyring_file File-Based Keyring Component. The keyring_file_data system variable has also been removed. In addition, the CMake options -DINSTALL_MYSQLKEYRINGDIR and -DWITH_KEYRING_TEST have been removed. in 8.4.0
- deprecated keyring_encrypted_file: Use component_keyring_encrypted_file instead; see Using the component_keyring_encrypted_file Encrypted File-Based Keyring Component. The keyring_encrypted_file_data and keyring_encrypted_file_password server system variables have also been removed. in 8.4.0
- deprecated keyring_oci: Use component_keyring_oci instead; see Using the Oracle Cloud Infrastructure Vault Keyring Component. The following server system variables have also been removed: keyring_oci_ca_certificate, keyring_oci_compartment, keyring_oci_encryption_endpoint, keyring_oci_key_file,… in 8.4.0
- deprecated openssl_udf: Use the MySQL Enterprise Encryption component instead; see MySQL Enterprise Encryption. in 8.4.0
- deprecated Support for weak encryption ciphers has been removed. This means that, when configuring encrypted connections, MySQL no longer allows specifying any cipher that does not meet the following conditions: This has implications for setting the system variables ssl_cipher, admin_ssl_cipher,… in 8.4.0
- deprecated Proper TLS version (TLS v1.2 or TLSv1.3, as appropriate) in 8.4.0
- deprecated Forward secrecy in 8.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 notesfixWith 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 notesfixFixed 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 notesfixWith 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 notessecurityThis 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 notesfixUpdated 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 notesfeatureMySQL 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 notesfixThe 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 notesfixIt was possible in some cases to grant a user the EXECUTE privilege, but subsequently to be unable to revoke it from the same user. (Bug #37570206)
fix<COMMAND_CLASS> was not populated for <NAME>Execute</NAME>. For more information, see Logging Specific Event Classes. (Bug #36686351)
securityThis release introduces a MySQL component, component_keyring_hashicorp, which takes the place of the HashiCorp Vault keyring plugin; that plugin and its associated system variables are now deprecated (and subject to removal in a future version of MySQL). Like the plugin, the component allows…
deprecatedGroup Replication: The OpenSSL Engine interface is deprecated, and is no longer being included in OpenSSL v3 main packages by some Linux distributions, including Fedora. To avoid build issues, the usage of the OpenSSL Engine interface by the Group Communication System (GCS) is now restricted to…
fixLinux: Use /usr/bin/gcc (GCC 14.2.1) when building the server on Oracle Linux 10. (Bug #37616148)
fixLinux: Use --experimental_allow_proto3_optional when building with protoc version 3.14 or earlier. (Bug #37579947)
fixMicrosoft Windows: The server could not be built using Visual Studio 17.13.1 with MSVC_CPPCHECK enabled. (Bug #36925076)
fixUpgraded the bundled Curl library to version 8.12.1. (Bug #37633587)
fixDisabled the -ftls-model=initial-exec option when compiling MySQL on FreeBSD. (Bug #37613105)
fixAbseil could not be built on FreeBSD. (Bug #37611924)
fixDo not read share/charsets/Index.xml when running comp_err. (Bug #37569683)
fixThe file mysql_version.cmake was included multiple times. (Bug #37559512)
breakingRemoved the unused file strings/utr11-dump.cc. (Bug #37549844)
fixThe bundled version of opentelemetry-cpp was upgraded to version 1.19.0. (Bug #37506554)
fixFixed a large number of warnings generated by clang-tidy. (Bug #37471922)
fixinclude/my_systime.h included std::chrono, which was unneeded, and which has now been removed. (Bug #37458343)
fixIn order to use xxhash functions independently from the lz4 library (bundled or source), we compiled xxhash.c into our own binaries, which required using a great many CMake directives. Instead, we now build an interface library for xxhash, and link with that wherever such functions are used. (Bug…
featureGroup Replication: Added the Group Replication Primary Election component, which makes it possible to specify the most-up-to-date selection method for choosing a new primary in the event of failover. The Group Replication plugin is a prerequisite for this component, which must be installed on each…
featureThe Boolean used key in the JSON format employed for usage data has been replaced with a counter, usedCounter. After upgrading to this release, no used members are added or updated in this data by the Option Tracker.
deprecatedNDB Cluster: The --restore-privilege-tables option for ndb_restore, which was deprecated in NDB 8.0.16, has now been removed. (Bug #36298807)
deprecatedReplication: The replica_parallel_workers server system variable can no longer be set to 0; the minimum permitted value is now 1. (WL #13957)
deprecatedThe system variable innodb_undo_tablespaces, deprecated in MySQL 8.0.14, has been removed. (WL #16746)
deprecatedThe system variables innodb_log_file_size and innodb_log_files_in_group, deprecated in MySQL 8.0.30, have been removed. (WL #16743)
deprecatedThe Version Tokens plugin, which was deprecated in MySQL 9.2.0, has been removed in this release. (WL #16614)
breakingRemoved extraneous pipe characters (|) from the first example.
featureMySQL JavaScript programs now provide localization and internationalization of numbers, dates, and other values by supporting the Intl global object. MySQL locales map to JavaScript locales by substituting a dash character for the underscore; for example, setting lc_time_names = "ja_JP" means that…
featureThe statements ALTER PROCEDURE and ALTER FUNCTION now accept a USING clause and so can add, replace, or remove a list of libraries imported by the named JavaScript stored procedure or stored function. See the descriptions of these statements for more information and examples.
featureCREATE LIBRARY now supports a COMMENT clause. This comment is shown in the output of SHOW CREATE LIBRARY and SHOW LIBRARY STATUS (see next item). It is also shown in the ROUTINE_COMMENT column of the Information Schema ROUTINES table; the LIBRARIES table also adds a LIBRARY_COMMENT column for…
featureThis release also implements a SHOW LIBRARY STATUS statement which provides basic information about one or more JavaScript libraries. Like SHOW PROCEDURE STATUS, this statement supports LIKE and WHERE clauses for filtering the output.
featureThe ALTER LIBRARY statement implemented in this release makes it possible to update the comment for a JavaScript library.
featureThe status variables Com_alter_library and Com_show_library_status, added in this release, provide counts of ALTER LIBRARY and SHOW LIBRARY STATUS statements, respectively.
featureThe Option Tracker component has added support for two MySQL features—the traditional MySQL Optimizer, and the MySQL Hypergraph Optimizer (available in MySQL HeatWave only). See Option Tracker Supported Components, for more information. (WL #16548)
featureYou can now configure a network namespace for your telemetry endpoints on Linux platforms. The following system variables are added: (WL #16735)
featureImportant Change: Beginning with this release, it is no longer possible to downgrade between individual MySQL Innovation series releases, even within the same series. For example, were a version 9.3.1 to be released, it would not be possible after upgrading to it to downgrade back from MySQL 9.3.1…
featureImportant Change: For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.16. For more information, see OpenSSL 3.0 Series Release Notes and OpenSSL Security Advisory (11th February 2025). (Bug #36033684)
featurePerformance: The output process of the mysql client for binary values (printed as hexadecimal strings) in query results has been optimized, speeding up slightly the output of large result sets containing binary values. (Bug #37334107)
featureAdded Enterprise Linux 10 (EL10) support. (Bug #37592019)
featureThe signature of the handlerton drop_database_t API has been changed: instead of the database path, it now accepts the database name as a parameter. The change makes the API more efficient. (Bug #37191149)
featureThe mysqldump utility can now provide logical dumps of information about user accounts, writing the appropriate CREATE USER and GRANT SQL statements to the dump, when run with the --users command line option introduced in this release. You can cause the CREATE USER statements generated by…
featureThe mysql client now displays query execution times with three decimal places of precision to show milliseconds. Our thanks to Marcelo Altmann for the contribution. (Bug #117270, Bug #37510263)
+136 more items in the release notesfixThe database cache was not flushed properly following execution of DROP USER. (Bug #37132323)
deprecatedThis release adds the CREATE_SPATIAL_REFERENCE_SYSTEM privilege, which allows the user to execute any of the statements CREATE SPATIAL REFERENCE SYSTEM, CREATE OR REPLACE SPATIAL REFERENCE SYSTEM, and DROP SPATIAL REFERENCE SYSTEM. Use of the SUPER privilege for this purpose should now be…
fixFailed password validation was not always handled correctly. (Bug #37041439)
fixProcess memory usage grew when the libmysqlclient API user tried to cache and reuse a prepared statement, preparing it once and then calling either of mysql_stmt_bind_param() or mysql_stmt_bind_named_param() followed by mysql_stmt_execute(), repeatedly without calling the matching…
fixThe Doxygen comments for the OK_Packet did not cover all possible cases; this has been updated so that it now accurately reflects the data actually sent by the server. (Bug #35630063) References: See also: Bug #35358417, Bug #36374232.
fixZero rows resulted (where one row was expected) when selecting from a view created with its connection and client character set to latin1, where a query on the view used utf8 as its connection and client character set, the view contained literal values with non-ASCII characters, and the query…
fixmacOS: Use OBJECT library in place of routing_guidelines when compiling with Xcode. (Bug #37350937)
breakingmacOS: Removed obsolete CMake code from MacOS builds. (Bug #37258036)
fixmacOS: It is now possible to build MySQL using the Homebrew version of Clang. (Bug #37256912)
breakingmacOS: Removed warnings of the form ld: warning: ignoring duplicate libraries and warnings specific to xcodebuild. (Bug #37065301)
fixMicrosoft Windows: Windows builds are now configured with -DWITH_ASAN. (Bug #37309813)
fixMicrosoft Windows: Disabled windows compiler warnings C26445 and C26821 in cmake/msvc_cppcheck.cmake. Both of these relate to MSVC substitution of gsl::span for std::span, which is not used for MySQL. (Bug #37158156)
breakingMicrosoft Windows: Removed compiler warnings issued when building MySQL with Visual Studio 2022. (Bug #113870, Bug #36256477)
fixMicrosoft Windows: The CMake option -DWITH_SASL is not supported for building MySQL on Windows. Attempting to use this option when doing so now causes the build to terminate with an error. (Bug #113558, Bug #36155972)
deprecatedImplemented the standards-compliant my_char_traits<unsigned char> for use as a drop-in replacement for std::char_traits<unsigned char>, which was deprecated in Clang 18 and removed in Clang 19. (Bug #37273525, Bug #37785339)
breakingRemoved or fixed issues in a number of copyright header files. (Bug #37238155)
breakingRemoved a maybe-uninitialized error found in sql/item.cc when building MySQL with GCC 14. (Bug #37157201)
breakingRemoved an error in mysql_prepare_create_table() (in the file sql/sql_table.cc) found when compiling MySQL with XCode 16. (Bug #37068527)
deprecatedThe entries present in the mysql_option.option_usage table depended on whether the Option Tracker was installed before or after the Audit Log. See Option Tracker Component, and MySQL Enterprise Audit Plugin (Deprecated), for more information. (Bug #37037438)
deprecatedThis release adds a Connection Control component (component_connection_control) intended to replace the Connection Control plugins (see Connection Control Plugins). A single component takes the place of both plugins, which are now deprecated and subject to removal in a future version of MySQL. One…
deprecatedMicrosoft Windows: On Windows, MySQL Configurator no longer executes the deprecated FLUSH PRIVILEGES statement. (Bug #37170330)
deprecatedThe FLUSH PRIVILEGES statement is now deprecated, and causes a warning when issued. You should expect this statement to be removed in a future MySQL release. The following constructs are also deprecated, and now cause a warning when used: The features listed here do not cause any warnings but…
deprecatedThe FLUSH_PRIVILEGES privilege, and granting of this privilege
deprecatedmysqladmin flush-privileges
deprecatedmysqladmin reload.
deprecatedFlushing of privileges by SIGHUP
deprecatedFlushing of the caching_sha2 cache by FLUSH PRIVILEGES
deprecatedFlushing of privileges by mysqladmin refresh
deprecatedThe Version Tokens plugin is now deprecated, and subject to removal in a future MySQL release. The following related features are also now deprecated, and raise deprecation warnings whenever they are invoked: Attempting to install the version_tokens plugin—or to start the server when this plugin…
deprecatedThe functions version_tokens_delete(), version_tokens_edit(), version_tokens_lock_exclusive(), version_tokens_lock_shared(), version_tokens_set(), version_tokens_show(), and version_tokens_unlock()
deprecatedThe VERSION_TOKEN_ADMIN privilege
deprecatedThe version_tokens_session and version_tokens_session_number server system variables
featureJavaScript programs supported by the MLE Component, available as part of MySQL Enterprise Edition, now supports access from JavaScript routines to user-defined functions, procedures, and variables. MySQL stored functions and procedures can be accessed using the Schema methods getFunction() and…
featureThe MLE component, available as part of MySQL Enterprise Edition, now supports reusable JavaScript libraries containing functions which can be called from other JavaScript stored programs. JavaScript libraries can be managed using the CREATE LIBRARY and DROP LIBRARY SQL statements added in this…
featureInnoDB: During recovery, IBUF merges were disabled for all recovery batches except for the last batch, but is now disabled for all batches. This change prevents the addition of new redo log entries during recovery, as they led to deadlock and recovery performance degradation with reads and writes…
featureMicrosoft Windows: On Windows, MySQL Configurator has added a command-line interface for configuring a MySQL Server installation. See MySQL Configurator CLI, for more information. A known limitation of this release: the new CLI only supports the configure action. (WL #16564)
featureBinary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.11.1. (Bug #37389565)
featureRefactored code to take advantage of OpenSSL 3.x functionality to improve performance for cryptographic operations, such as those performed by the MySQL MD5() and SHA2() functions. (Bug #116939, Bug #37185170, WL #16504)
featureAdded a source code static analysis tool. For usage details, see scripts/static_analysis.md in the source code or execute python3 ./scripts/static_analysis.py --help for additional help. Use this to check single commits or the entire source code repository. (WL #16329)
featureConverted the caching SHA-2 authentication plugin to use the event component API instead of the audit log plugin API. This also removes the sha2_cache_cleaner audit plugin. (WL #16572)
+112 more items in the release notesfixPreviously, CREATE DATABASE and DROP DATABASE were atomic but were not fully crash-safe. This could lead to the following issues: These statements are now fully atomic and crash-safe, as long as all tables in the affected database use a storage engine (such as InnoDB) that supports atomic data…
breakingWhen removal of the database directory as part of DROP DATABASE was unsuccessful due to a file system error or an unexpected shutdown, the transaction containing DROP DATABASE was not always rolled back; manual intervention was required in such cases to rectify the problem.
fixThe audit log treated a user whose name did not begin with an alphanumeric character (such as '$foo') as invalid, despite the fact that the MySQL server allows such users to be created. The same issue also affected MySQL Enterprise Firewall. (Bug #36778917)
featureMicrosoft Windows: MySQL webauthn plugins now support Windows Hello authentication with Windows 11 and later using the MySQL authentication_webauthn plugin; the Windows Hello passkey store is now accepted as a software “device” (in addition to supported hardware devices). The server plugin is…
featureAdded OpenID Connect support for MySQL Enterprise Edition using the authentication_openid_connect server-side authentication plugin. For additional details, see OpenID Connect Pluggable Authentication. (WL #16269)
fixThe asynchronous interface used unsafe static local variables to store state information. (Bug #115703, Bug #36891894)
fixMySQL did not compile on Fedora 41. (Bug #37046924)
securityAdded CONTRIBUTING.md and SECURITY.md files to the MySQL sources to conform to Oracle's Open Source guidelines. (Bug #36998165)
securityBinary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.9.1. Important issues fixed in curl version 8.9.1 are described at https://curl.se/docs/security.html. (Bug #36967379, Bug #36955197)
breakingWhen compiling MySQL, we no longer check for Fedora versions 28 or 34, since these have reached end of life and are no longer supported. (Bug #36819263)
featureGroup Replication: The component component_group_replication_flow_control_stats, which provides statistics about transactions throttled by Group Replication flow control, is implemented in this release as part of MySQL Enterprise Edition. Installation of this component requires that the Group…
featureThe Option Tracker component (component_option_tracker) added in this release implements two tables that supply information about options (that is, named features) present in the MySQL server as well as those in components and plugins. For a given option, the values of the OPTION_NAME column of…
deprecatedThis release introduces an Amazon Web Services keyring component (component_keyring_aws); this component supersedes the AWS keyring plugin (keyring_aws), which is now deprecated and thus subject to removal in a future version of MySQL. For more information about the AWS keyring component, see…
deprecatedNDB Cluster APIs: Support for Node.js, which was deprecated in NDB Cluster 9.0, is removed in this release. (WL #16246)
deprecatedThe keyring_aws plugin is now deprecated, and subject to removal in a future version of MySQL. Users should migrate to the AWS keyring component, which is introduced in this release. For more information about the AWS keyring component, see Using the component_keyring_aws AWS Keyring Component.…
breakingSupport for AES ECB, which is insecure, has been removed from all MySQL keyring-related components. (Bug #36749277)
featureMySQL's OpenTelemetry Logging enables you to export telemetry logs from your MySQL Server to OpenTelemetry backends for analysis. This feature is implemented in the following ways: (WL #15201, WL #15202)
featureSupport is added in this release for an IF NOT EXISTS clause for use with the CREATE VIEW statement. IF NOT EXISTS has the following effects: IF NOT EXISTS is not compatible with OR REPLACE, and these two clauses cannot be used together in the same CREATE VIEW statement. Attempting to do so causes…
securityIf the view already exists, the statement appears to succeed but does not change the view definition, and yields a warning, as shown here: mysql> CREATE VIEW v1 AS SELECT c1, c3 FROM t1; Query OK, 0 rows affected (0.01 sec) mysql> CREATE VIEW v1 AS SELECT c2 FROM t1; ERROR 1050 (42S01): Table 'v1'…
featureImportant Change; InnoDB: The default value of innodb_log_writer_threads is now OFF on systems with fewer than 32 logical processors. (WL #16396)
featureImportant Change: For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.15. For more information, see OpenSSL 3.0 Series Release Notes and OpenSSL Security Advisory [3rd September 2024]. (Bug #37021075)
featurePerformance; Replication: The data structure used in tracking binary log transaction dependencies has been changed from Tree to ankerl::unordered_dense::map, which uses approximately 60% less space, and which should thus contribute to better dependency tracking performance. (Bug #37008442, Bug…
featureGroup Replication: Added new INFO level logging messages in the following cases: (Bug #32929873) References: See also: Bug #32762677.
featureWhen an action begins on all nodes
featureWhen sending of messages is blocked while waiting for the action to complete
featureWhen messages are received and the internal message counter is decremented
featureFor consistency of output, spaces have been added before and after the = sign in the condition shown for lookup_condition by EXPLAIN FORMAT=JSON when explain_json_format_version=2, as well as those shown for operation when using EXPLAIN FORMAT=TREE. (Bug #36825515)
featureOutput from EXPLAIN FORMAT=TREE now includes information about the semijoin strategy used, if any. (Bug #36773414)
featureAdded "multi_range_read": true to EXPLAIN FORMAT=JSON output, when explain_json_format_version is set to 2, whenever MRR is used for MRR and index range scan access paths. In addition, (Multi-Range Read) now appears in the operation field in the EXPLAIN FORMAT=TREE output for index range scans…
featureAdded the --system-command option for the mysql client, which enables or disables the system client command. This option is disabled by default, which means that the system command is rejected with an error. To enable it, use --system-command=ON. (Bug #36377685, WL #16482) References: See also:…
featureThe MySQL server now supports an alternative syntax for the GROUP BY clause ROLLUP modifier. Consider the following query: SELECT IF(GROUPING(year), 'All years', year) AS year, IF(GROUPING(country), 'All countries', country) AS country, IF(GROUPING(product), 'All products', product) AS product,…
featureThis release implements the following two status variables for tracking internal temporary table conversions from in-memory to disk: (WL #16377)
featureTempTable_count_hit_max_ram counts the number of in-memory to disk table conversions due to reaching the temptable_max_ram limit with the TempTable storage engine. This is only a global status variable.
featureCount_hit_tmp_table_size counts the number of in-memory to disk conversions due to reaching the tmp_table_size limit with the TempTable storage engine, or from reaching the smaller value of tmp_table_size and max_heap_table_size with the MEMORY storage engine. This is both a global and session…
featureThe maximum TOTAL_ROW_VERSIONS value changed from 64 to 255. This value is incremented by executing ADD COLUMN and DROP COLUMN operations using the INSTANT ALGORITHM. (WL #16369)
featureAdded the following server system and status variables for use in tracking memory usage by queries when global_connection_memory_tracking is enabled; the first two variables in the list shown here apply globally, and the second two to individual user connections: These variables are intended for…
featureglobal_connection_memory_status_limit: This system variable determines the maximum total amount of memory that can be consumed by all user connections to the server. When the total amount of memory used by all queries exceeds this amount, this causes…
featureCount_hit_query_past_global_connection_memory_status_limit: This status variable tracks the number of times that queries using any connection have caused total memory consumption to exceed global_connection_memory_limit. This is incremented only when a query brings the total memory consumption…
featureconnection_memory_status_limit: This system variable determines the maximum amount of memory that can be consumed by a given user connection before incrementing Count_hit_query_past_connection_memory_status_limit.
featureCount_hit_query_past_connection_memory_status_limit: This status variable tracks the number of times that queries using the current connection have caused total memory consumption to exceed connection_memory_limit. This is incremented, for a query executed within the connection, only when such a…
+138 more items in the release notesfixInnoDB: In some cases, following the creation of a very large number of tables (8001 or more), the server could not be restarted successfully. (Bug #36808732) References: This issue is a regression of: Bug #33398681.
fixInnoDB: Improved tablespace file scan performance at startup. (Bug #110402, Bug #35200385)
fixGroup Replication: Running a CREATE TABLE ... SELECT statement on a source coming from an asynchronous channel to Group Replication led to errors on the replica. (Bug #36784284)
fixThe audit log plugin printed the warning Plugin audit_log reported: 'Cannot process audit log file. File name timestamp value is missing or invalid: 'dbname'' when no audit log file was being processed. (Bug #36400810)
fixWith large files (200 MB or larger), executing audit_log_read() took an excessive amount of time to find the bookmark matching the one specified when invoking the function. (Bug #36281295)
fixFixed an issue related to audit_log_read performance. (Bug #36281295, Bug #38275868)
fixAudit log pruning did not function after removing or renaming a file from the audit log. Now pruning continues in such cases, but with a warning printed in the error log stating that it was not possible to delete the missing audit log file. (Bug #35902913)
fixImproved the audit_null example plugin. (Bug #35820314)
fixMade improvements to the authentication code. (Bug #35325870)
fixImproved log messages to provide clear reasons for Access denied errors when using the authentication_ldap_sasl plugin without proxying. (Bug #35317691)
fixMySQL LDAP SASL authentication, when used with the GSSAPI method to access an OpenLDAP server, was rejected with the MySQL server error Plugin authentication_ldap_sasl reported: 'LDAP authentication failed or group retrieval failed: LDAP error: Invalid DN syntax', because OpenLDAP did not…
fixWhen resolving a call to the REPLACE() function, the character set and collation of the function result are copied from the first argument. The remaining two arguments, if they are literal values, should be converted to this character set, but only the second argument was converted. This fix…
fixThe internal function my_instr_mb() assumed incorrectly assumption in several places that byte lengths for input strings could be used to short-cut certain decisions. In the case of multibyte character sets and collations, this cannot be done since, under some collation rules, characters with…
fixThe internal function Item_func::eq() erroneously treated the two expressions CONVERT(a USING latin1) and CONVERT(a USING utf8mb4) as being equal. (Bug #113506, Bug #116762, Bug #36137690, Bug #37323921)
fixmacOS: CMake no longer tries to use the native ctags on MacOS, and now requires the Homebrew version of it to be installed on the system when building MySQL. (Bug #36590594)
fixmacOS: Enabled use of gRPC when building MySQL on MacOS. (Bug #36537726)
breakingmacOS: The Xcode version of zlib was removed from the default list of system libraries to use when configuring with -DWITH_SYSTEM_LIBS=ON. (Bug #36537593)
fixMicrosoft Windows: The BUILD_ALL target did not work when compiling on Windows. (Bug #36424619)
fixMicrosoft Windows: Excessive RAM usage led to disk swapping when compiling MySQL on Windows using Ninja. (Bug #36399256)
fixInterface libraries for librpdserver_shared.so were missing from the bundled protobuf/grpc on Ubuntu 24.04. (Bug #36678790)
fixMaintainer mode is now disabled when building the debug version of the server for .deb packages. (Bug #36619757)
fixUpgraded the bundled googletest and googlemock sources to version 1.14.0. (Bug #36562482)
fixAdded a missing dependency on GenError. (Bug #36551721)
breakingRemoved linker warnings raised when compiling code that used RapidJSON. (Bug #36322583)
breakingRemoved warnings raised in sql/statement/ed_connection.cc when building on Ubuntu 23.04. (Bug #114436, Bug #36428465)
deprecatedReplication: MySQL 9.0.0 deprecates transactions which update both transactional tables and nontransactional or noncomposable tables. Such a transaction now causes a deprecation warning to be written to both the client and the error log. Only the InnoDB and BLACKHOLE storage engines are…
deprecatedInnoDB and BLACKHOLE
deprecatedMyISAM and MERGE
deprecatedperformance_schema and any other storage engine
deprecatedTempTable and any other storage engine
deprecatedThe mysql_native_password authentication plugin, deprecated in MySQL 8.0, has been removed, and the server now rejects mysql_native authentication requests from older client programs which do not have CLIENT_PLUGIN_AUTH capability. For backward compatibility, mysql_native_password remains…
deprecatedThe --mysql-native-password server option
deprecatedThe --mysql-native-password-proxy-users server option
deprecatedThe default_authentication_plugin server system variable
deprecatedThe MIN_VALUE and MAX_VALUE columns of the Performance Schema variables_info table are now deprecated, and subject to removal in a future version of MySQL. Instead, you should use the MIN_VALUE and MAX_VALUE columns of the variables_metadata table, which provide the same information. (WL #15585)
featureMySQL 9.0 Enterprise Edition now includes support for stored programs written in JavaScript, such as this simple example created using the CREATE FUNCTION statement and JavaScript code shown here: CREATE FUNCTION gcd(a INT, b INT) RETURNS INT NO SQL LANGUAGE JAVASCRIPT AS $mle$ let x = Math.abs(a)…
breakingImportant Change: ER_SUBQUERY_NO_1_ROW has been removed from the list of errors which are ignored by statements which include the IGNORE keyword. This has been done for the following reasons: Following an upgrade to this release, this change can make an UPDATE, DELETE, or INSERT statement which…
featureThis release adds two tables to the MySQL Performance Schema, listed here: For more information, see Performance Schema System Variable Tables. (WL #15855)
deprecatedThe variables_metadata table provides general information about system variables. This information includes the name, scope, type, range (where applicable), and description of each system variable recognized by the MySQL server. The MIN_VALUE and MAX_VALUE columns of this table are intended to…
deprecatedThe Information Schema tables TP_THREAD_GROUP_STATE, TP_THREAD_GROUP_STATS, and TP_THREAD_STATE were deprecated in MySQL 8.0.14. Accessing any of these tables now produces a warning; you should use the equivalent Performance Schema tables instead. For more information, see Performance Schema…
featureSupport is added in this release for a VECTOR column type. A vector is a data structure which consists of a list of entries (4-byte floating-point values) which can be expressed either as a binary string value or a list-formatted string. A VECTOR column is declared with a maximum length or number…
featureA correlated subquery can now be optimized as an outer left join on a derived table when the subquery contains a LIMIT 1 clause (previously, such a subquery could not be transformed in this way if it contained any LIMIT clause). The LIMIT clause must use a literal 1; if it uses any other value, or…
featureJoin columns are now included in the output of EXPLAIN FORMAT=JSON. (Bug #36230046)
+144 more items in the release notesfixApplying 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…
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)
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 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 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)
fixThe bundled OpenTelemetry dependencies were upgraded from opentelemetry-cpp 1.23.0 to 1.27.0 and from opentelemetry-proto 1.7.0 to 1.10.0. (Bug #39491307)
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)
fixFixed an issue relating to Group Replication recovery-state validation. (Bug #39832216)
fixUnder certain circumstances, after recovery from a network partition, a group could lose quorum and remain in a reconnection loop that blocked writes after networking stabilized. Connection delegation now uses a single nonblocking publication attempt, allowing normal reconnection handling to…
fixFixed an issue relating to error handling while mysqlbinlog rewrites events. (Bug #39659682)
fixFixed an issue relating to Group Replication peer-address handling. (Bug #39654054)
securityFixed an issue relating to server-supplied RSA public-key handling during client-side SHA-2 authentication. (Bug #39883040)
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…
+45 more items in the release notesfixWith 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 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)
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: 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 table maintenance and clean-up. (Bug #39091376)
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…
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,…
fixFixed an issue relating to JSON Schema validation. (Bug #39489024)
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 Common Table Expressions with subquery_to_derived enabled. (Bug #39179197)
fixFixed an issue in ExtractValue(). (Bug #39138426)
fixFixed an issue relating to dynamic scan execution. Our thanks to Mengchu Shi and the team from Alibaba for the contribution. (Bug #38657550)
fixA fix in a previous version caused an issue where a WHERE equality condition could fail to match an existing row when a scalar subquery and its outer query referenced the same CTE. This fix prevents cleanup of derived-table temporary keys from a query block that does not own them, preserving…
fixUNION and UNION ALL queries with pushed-down WHERE conditions involving AND and IS NULL could return incorrect rows. Condition pushdown now preserves WHERE predicate semantics in set-operation branches. (Bug #119780, Bug #38888307)
fixQueries involving nested merged views and outer joins could return incorrect results when a view column containing a constant expression was evaluated before outer-join null completion. The optimizer retains the correct inner-table dependency for merged view columns, ensuring outer-join…
fixQueries with ORDER BY, a low LIMIT, and a reverse range scan on a composite index could return incorrect results if the optimizer removed the sort operation prematurely. As of this release, the optimizer accounts for all key parts required for ordering before selecting a reverse index range scan.…
fixWhen an index hint forced a secondary index, the optimizer could add an unnecessary Sort operator for ORDER BY or GROUP BY because it did not account for constant primary-key parts in the index ordering. Our thanks to Xingyu Yang and the team at Tencent for the contribution. (Bug #118960, Bug…
fixQueries using CONST access on a materialized temporary table could return incorrect results after an in-memory temporary table was converted to an on-disk table. As of this release, the temporary table's read state is reset after conversion, ensuring the expected rows remain accessible. Our thanks…
fixSome LEFT JOIN queries with OR conditions displayed dynamic range access in EXPLAIN, but still performed full scans of the inner table at execution time. This occurred because the optimizer did not recognize eligible outer-join predicates when evaluating range access. The optimizer now considers…
fixQueries that assigned names to derived-table columns produced by GROUP BY ... WITH ROLLUP could report an “Unknown column” error when a window function ordered by one of those names. Materialized rollup fields now retain their derived-table column names, allowing these references to resolve…
breakingAs of this release, MySQL no longer supports Enterprise Linux 7 (and associated glibc 2.17 generic).
fixFixed an issue relating to OBJECT_INSTANCE_BEGIN columns. (Bug #39449066)
fixReplication: Fixed an issue relating to client BINLOG execution with REPLICATION_APPLIER. (Bug #39474825)
fixReplication: Fixed an issue relating to heartbeat handling. (Bug #39377010)
fixReplication: On writable replicas with log_replica_updates disabled, concurrent local commits and applier work could cause a race condition. (Bug #39259437)
fixReplication: Fixed an issue relating to event rotate handling. (Bug #39253359)
fixReplication: A replication receiver configured with SOURCE_RETRY_COUNT=0 could stop after a later transient connection loss, despite SOURCE_RETRY_COUNT=0 allowing unlimited reconnect attempts. The inconsistency could also cause the receiver to exit without logging an additional reconnect error.…
fixReplication: Fixed an issue relating to error handling. (Bug #38924622)
fixReplication: ALTER USER statements with explicit empty authentication data were rewritten for the binary log without preserving the empty authentication string. This resulted in password_expired errors. (Bug #38478657)
fixReplication: If a replication channel was configured using an applier user, the privilege check for CREATE and DROP statements failed if those privileges are granted only at the database-specific level for that user. (Bug #37587555)
fixReplication: If explicit_defaults_for_timestamp was disabled, row-based replica apply or mysqlbinlog replay could stop when recomputing a stored, generated TIMESTAMP NOT NULL column from NULL input. Errors were returned similar to the following: Could not execute Write_rows event on table…
fixFixed several issues relating to validations. (Bug #39234600, Bug #38673268, Bug #38673285, Bug #38712932, Bug #39253416, Bug #39282368, Bug #39253383, Bug #39253491, Bug #39254867, Bug #39254885, Bug #39254896, Bug #39254914, Bug #39282350, Bug #39319907)
+19 more items in the release notesfixFixed 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…
fixUpdated the audit_log_rotate_on_size system variable to require the AUDIT_ADMIN privilege for modification. (Bug #38620615)
otherThe following logs are now instrumented for Telemetry Logging: See The setup_loggers Table. (WL #17167)
otherSlow Query Log
otherGeneral Log
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)
fixThe included zlib library has been upgraded to version 1.3.2. (Bug #38987448)
fixFixed a large number of warnings generated by clang-tidy. (Bug #37471922)
fixFixed an issue relating to the DEFAULT() function. (Bug #39057054)
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, 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)
fixFixed an issue relating to optimized prepared DELETE and UPDATE statements. (Bug #39071552)
fixFixed an issue relating to Batched Key Access path and partitioning. (Bug #38947039)
fixFixed an issue relating to query management. (Bug #38928287)
fixFixed an issue relating to REGEXP_INSTR subqueries. (Bug #38756896, Bug #35367340)
fixFixed an issue relating to memory management. (Bug #38573278)
fixQueries using semi join with materialization may return incorrect results due to a missing condition. Our thanks to Jingqi Tian and the team at Alibaba. (Bug #38110792)
fixFixed an issue relating to the Optimizer's SQL planner. (Bug #35634700)
fixWhen errors and warnings occurred during background histogram updates, the conditions in the diagnostic area were not cleared, leading to future background histogram updates emitted the same stale conditions to the error log. Our thanks to Tony Chen and the team at Amazon for the contribution.…
fixA previous fix changed range analysis for non-binary string collations, when a string constant in a range predicate was longer than the indexed column, no index range was formed, unless the collation was known to be safe. This resulted in queries, which should have used efficient range plans,…
fixA histogram generated by ANALYZE TABLE UPDATE HISTOGRAM ON col_name was not be accepted by ANALYZE TABLE UPDATE HISTOGRAM ON col_name USING DATA ... if the histogram was built on a bigint column with values outside the uint32 range. Our thanks to Tianfeng Li for the contribution. (Bug #116611, Bug…
fixIn an explain expanded query, join order hints were not printed with a valid syntax. Our thanks to Kaiwang Chen for the contribution. (Bug #116084, Bug #37053765)
fixConditions on const tables and on previously joined tables were not consistently taken into account when building ranges in get_quick_record_count(). This could lead to suboptimal or incorrect range estimates, especially when range predicates depended on values from const or earlier-joined tables.…
fixBuilding with PGO (Profile Guided Optimization) is now also supported for RPM builds on SLE/openSUSE and Fedora, by adding --define=with_pgo 1 to the rpmbuild command line. (Bug #38915967)
fixFor platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.5.5. For more information, see OpenSSL 3.5 Series Release Notes. (Bug #38867109, WL #17209)
fixFixed an issue relating to querying variables. (Bug #38100668)
fixThe internal pfs_get_thread_statement_locker_vc() function contained debugging code that was inadvertently included in release builds. (Bug #37743667)
fixThe PERFORMANCE_SCHEMA service thread v7 was not exposed, preventing its use by components. (Bug #37579218)
fixIt is now possible to enable or disable Telemetry meters from the command line or configuration file using the performance-schema-meter parameter, on server startup. See Server Meters. (Bug #36698082)
fixFixed an erroneous comment in storage/perfschema/table_host.h. Our thanks to Sho Nakazono for the contribution. (Bug #115844, Bug #36954266)
fixReplication: Under certain circumstances, multiple simultaneous queries on the binary_log_transaction_compression_stats table could cause the server to stop with an error. (Bug #36196212)
fixUnder high load, when using Thread Pool, connections could hang. (Bug #38693319)
featureThe bundled version of opentelemetry-cpp was upgraded to version 1.23.0. (Bug #38483354)
fixFixed an issue relating to Information Schema privileges. (Bug #35243416, Bug #37387633)
fixThe SQL parser consumed a large amount of memory when parsing very large queries with many large IN clauses. As of this release, the SQL parser's memory management has been improved. (Bug #105004, Bug #33390851)
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)
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…
fixFixed an issue related to bulk inserts. (Bug #38208188)
fixFixed an issue relating to Common Table Expressions (CTE). (Bug #38573285)
fixFixed an issue related to executing specific SQL queries. (Bug #38448700)
fixFixed an issue relating to SHOW CREATE TABLE. (Bug #38298692)
fixQueries which used REGEXP took longer to execute as prepared statements than as direct queries. (Bug #114056, Bug #36326728)
fixFor platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.18. For more information, see OpenSSL 3.0 Series Release Notes. (Bug #38632932)
fixConnecting to a MySQL server with a non-existing user now consistently returns an "Access denied for user" error message, regardless of the username length or MySQL version. Previously, errors were returned similar to the following: ERROR 1045 (28000): Access denied for user 'foo'@'localhost'…
securityFixed an issue relating to authentication. (Bug #118447, Bug #38077617)
fixInnoDB: Under certain circumstances, when using the que_eval_sql interface, a race condition could occur. (Bug #118705, Bug #38310595)
fixRunning SET PERSIST on a system variable after an upgrade can result in duplicate variable entries across different sections in mysqld-auto.cnf. (Bug #38680162)
fixBinary log purged before persisted binlog_expire_* options were loaded. (Bug #38554467)
fixWhen 2 of 6 instances in a geographically dispersed InnoDB Cluster lost connectivity, the primary server became unresponsive, causing the COMMIT and INSERT operations to become unresponsive as well. (Bug #38380392)
fixmysqldump's --order-by-primary option sorted data by every index on the table, instead of just sorting by the primary key. (Bug #38284832)
fixFixed several issues relating to Thread Pool blocking connections from closing. (Bug #38170188, Bug #36782728, Bug #38549372)
fixGTID gaps were generated because of the replica- skip-errors option. (Bug #28590993)
fixIf server was started on Windows platforms with --skip-grant-tables, privileges were not checked and remote connections were not permitted. As a result, the server might not start. (Bug #118805, Bug #38328780)
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)
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)
deprecatedWarnings raised by Clang 20 for non-trivially copyable types, deprecated literal operators, and incorrect main function declarations are no longer generated. (Bug #37785251)
fixFixed an issue related to executing certain UPDATE statements. (Bug #37590580) References: This issue is a regression of: Bug #31562881.
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)
fixUnder certain circumstances, a virtual index rollback could fail on 32-bit builds of MySQL Server. (Bug #38167527)
fixIf the buffer pool was very large, it could lead to a large number of chunks required by each buffer pool instance, which could fail if the operating system was unable to allocate the required memory. As of this release, this allocation is checked to ensure it is allocated correctly. (Bug #37994397)
fixUsers could encounter an assertion failure due to a data size and bounds mismatch. Errors were returned similar to the following: Assertion failure: ddl0file-reader.cc:193:m_ptr + data_size < m_bounds.second (Bug #37882398) References: This issue is a regression of: Bug #37233273.
fixFixed an issue relating to modifying the internal FTS configuration. (Bug #37792010)
fixFixed an issue related to virtual indexes. (Bug #37602657)
fixIf the row size exceeded the maximum allowed size due to innodb_strict_mode=OFF, confusing warning messages similar to "Cannot add field" could appear in certain situations, such as selecting from a table or dropping a column. Error messages are improved for this scenario. (Bug #37003342, Bug…
fixFixed an issue relating to SQL queries involving correlated scalar subqueries and JSON tables. (Bug #36684370)
fixFor platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.17. For more information, see OpenSSL 3.0 Series Release Notes. (Bug #38457056)
fixMySQL Server RPM installation on Fedora 42 could fail due to conflicts with MariaDB 11.8 packages. Errors were returned similar to the following: file /usr/bin/mysqld conflicts between mysql-community-server-8.4.7 and mariadb11.8-server-3:11.8.3, file /usr/share/man/man1/mysql.1.gz conflicts…
fixThe RPM specification and DEB control files were missing several requirements, making it impossible to build those formats. (Bug #38310603)
fixConnections waiting on the connection control plugin were not displayed in the performance_schema.processlist table. (Bug #38043683)
fixLogical clock handling for CREATE ... SELECT statements has been improved to ensure accurate logical clock values in the replica relay log. (Bug #38383106)
fixThe server sometimes processed table references incorrectly. (Bug #38001000)
fixPARTITION BY ... (DEFAULT (column)) was not always handled correctly. (Bug #111234, Bug #35451459) References: This issue is a regression of: Bug #33142135.
fixSolaris: Clang and GCC now can be used for compiling MySQL on Solaris. (Bug #30562248)
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)
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)
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)
fixThe linker tried to use the empty Cmake variable ${ICU_LIBRARIES}, even though the correct library (ext::icu) was already linked elsewhere. (Bug #36524167)
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)
fixMicrosoft Windows: An in-place upgrade of MySQL Server using MySQL Configurator failed when a Windows service name other than the default had been used. (Bug #37917039)
fixMicrosoft Windows: When upgrading a server from 8.0 to a higher series, MySQL Configurator did not persist custom server settings in the my.ini file. (Bug #37481548)
fixMicrosoft Windows: When upgrading a MySQL Server using MySQL Configurator, the process hung in the "Starting the server and upgrading system tables" step if a custom error log name was used. (Bug #37463478)
fixFixed an issue relating to importing tables. (Bug #37621360)
fixOn Fedora 24, Oracle MySQL RPMs could not be installed due to package conflicts when MariaDB was already installed on the system. With this fix, the conflicts are not properly handled to allow MySQL Server to be installed successfully. (Bug #37798784)
featureImportant Change: Added the mysql client --commands option, which enables or disables most mysql client commands. This option is enabled by default. To disable it, start the client with --commands=OFF or --skip-commands. For a complete list of all commands affected by this option, and additional…
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)
featureBinary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.14.1. (Bug #37389565)
fixImportant Note; Group Replication: The Group Communication System (GCS) handles Group Replication communication between members, and keeps track of the group membership and connections between all group members. Membership tracking includes the membership's current and previous two iterations.…
fixPerformance: Redundant conditions in some queries optimized away in MySQL 8.0 were no longer removed in later versions, leading to a significant drop in the performance of such queries. (Bug #117907, Bug #37808260) References: This issue is a regression of: Bug #30112096.
fixNDB Cluster: Following an upgrade from NDB 8.0 to NDB 8.4, all data nodes in the cluster underwent an unexpected simultaneous restart. This occurred when the transaction coordinator had no scan state, leading to protocol timeout; the resulting misalignment in protocol states caused data nodes to…
fixNDB Cluster: Concurrent ALTER TABLE statements could cause delays of up to 100 * TransactionDeadlockDetectionTimeout before failing with a lock wait timeout when a client held a conflicting row lock, stalling the accompanying get_commit_count() call. The retry mechanism has been adjusted to…
fixInnoDB: When rebuilding a primary key, the server sometimes encountered issues when duplicates were present, potentially leading to the server stopping unexpectedly. Our thanks to Xizhe Zhang and the team at Alibaba for the contribution. (Bug #37822992)
fixInnoDB: Fixed an issue relating to dropping columns that were part of an index. (Bug #37726881)
fixInnoDB: MySQL Community Edition binaries included unnecessary OpenTelemetry symbols, due to unprotected static arrays. (Bug #37689163)
fixInnoDB: The double write buffer was unnecessarily large. When calculating the number of segments per file, one extra segment was always added, whereas an extra segment should be added only if the number of Double_write instances is not divisible by the number of dblwr files. (Bug #37684656)
fixInnoDB: Fixed an issue relating to DELETE operations. (Bug #37478594)
fixInnoDB: Creating a secondary index on a VARCHAR column could allocate more memory than configured, with the amount allocated being directly related to the value of innodb_ddl_buffer_size, leading to errors similar to ERROR 1136 (21S01): Column count doesn't match value count at row 1. (Bug…
fixInnoDB: Fixed an issue relating to indexing spatial datatype columns. (Bug #36682518)
fixInnoDB: The temptable handler did not terminate cleanly during server shutdown, potentially causing the server to terminate unexpectedly. This issue has been addressed by implementing a mechanism to track and properly clean up temptable objects associated with each thread. (Bug #36538081)
fixInnoDB: A long semaphore wait crash could occur when a redo log consumer lagged behind after a failed MySQL Enterprise Backup incremental backup, preventing the redo log writer thread from advancing. Error messages were returned similar to the following: [Warning] [MY-013934] [InnoDB] Redo log…
fixInnoDB: Fixed an issue relating to range queries on tables. (Bug #31360522) References: See also: Bug #38063122.
fixPartitioning: Truncating a partition was rejected with a duplicate entry error when the partition ID exceeded INT_MAX, preventing creation of new partitioned tables. To mitigate this issue, the Table_partition_values_pk class constructor now uses ulonglong instead of int for the object ID. (Bug…
fixReplication: When using replication in a chain, CREATE TABLE ... AS SELECT sometimes resulted in inconsistent entries in the binary log, potentially causing replication to break on downstream servers. Error messages related to this issue included errors resulting from missing START TRANSACTION…
fixReplication: During semisync replication, when the length of the binary log suffix exceeded six digits (.999999), so that the next log file became—for example—mysql-bin.1000000, the replication protocol unexpectedly changed from semisynchronous to asynchronous. Our thanks to Wuhao Cao and Karry…
fixGroup Replication: The Gr_empty_consensus_proposals_count system status variable was not updated as expected. (Bug #37937927)
fixGroup Replication: In an unstable network environment, a Group Replication InnoDB Cluster with group_replication_paxos_single_leader=ON experienced several long-running transactions that became stuck in the waiting for handler commit state. As a consequence, group_replication_set_as_primary() was…
fixNDB Cluster APIs: Excluding a VARCHAR column from an event definition resulted in an Invalid schema object version error. (Bug #37766391) References: See also: Bug #31848270.
fixRPM installations on Fedora 24 could not be completed because conflicting packages were pulled from upstream. This fix adds the proper obsoletes to block the conflicting packages. (Bug #37976913)
fixSome triggers which called stored routines did not always execute correctly. (Bug #37915445)
+21 more items in the release notesfixIt was possible in some cases to grant a user the EXECUTE privilege, but subsequently to be unable to revoke it from the same user. (Bug #37570206)
fix<COMMAND_CLASS> was not populated for <NAME>Execute</NAME>. For more information, see Logging Specific Event Classes. (Bug #36686351)
deprecatedGroup Replication: The OpenSSL Engine interface is deprecated, and is no longer being included in OpenSSL v3 main packages by some Linux distributions, including Fedora. To avoid build issues, the usage of the OpenSSL Engine interface by the Group Communication System (GCS) is now restricted to…
fixLinux: Use /usr/bin/gcc (GCC 14.2.1) when building the server on Oracle Linux 10. (Bug #37616148)
fixUpgraded the bundled Curl library to version 8.12.1. (Bug #37633587)
fixAbseil could not be built on FreeBSD. (Bug #37611924)
fixThe bundled version of opentelemetry-cpp was upgraded to version 1.19.0. (Bug #37506554)
fixIn order to use xxhash functions independently from the lz4 library (bundled or source), we compiled xxhash.c into our own binaries, which required using a great many CMake directives. Instead, we now build an interface library for xxhash, and link with that wherever such functions are used. (Bug…
fixUse xxHash-0.8.2 from GitHub rather than the version bundled with lz4. (Bug #37387318)
fixImportant Change: When an SQL function is improved from one release to the next, it may throw SQL errors in situations in which it previously did not. If this happens in a table's constraints, default expressions, partitioning expressions, or virtual columns, the table could not be opened. This…
fixFixed a performance issue in the PROCESSLIST table. (Bug #36778475)
fixInnoDB: InnoDB now uses simplified APIs for saving and restoring level one progress during parallel scans. (Bug #37517125)
fixInnoDB: Server startup could be significantly slower for deployments with very large numbers of InnoDB tables because MySQL read each tablespace file to identify its space ID. Startup now reads only the required header sector from each .ibd file and uses direct I/O where available, reducing…
featureImportant Change: For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.16. For more information, see OpenSSL 3.0 Series Release Notes and OpenSSL Security Advisory (11th February 2025). (Bug #36033684)
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.
featureIncreased the historical 1024-byte limit when printing the current query during signal handling to 1073741824 (1024 * 1024 * 1024). (Bug #37603354)
fixInnoDB: Fixed a potential memory leak in several places in the innobase code. (Bug #37403052)
fixInnoDB: Under certain circumstances, MySQL could crash during shutdown due to pages which were still fixed or dirty. Errors similar to the following were logged: [ERROR] [MY-011908] [InnoDB] [FATAL] Page [page id: space=46, page number=75] still fixed or dirty [ERROR] [MY-013183] [InnoDB]…
fixInnoDB: CHECK TABLE for spatial indexes did not verify the MBR against the geometry MBR stored in the clustered index record. This could result in incorrect behavior of spatial indexes. As of this release, CHECK TABLE EXTENDED verifies the MBR matches the MBR stored in the clustered index record.…
fixInnoDB: Fixed an issue relating to pessimistic row update. Our thanks to Mengchu Shi and the team at Alibaba for the contribution. (Bug #37292404)
fixInnoDB: The CHECK TABLE operation could incorrectly report corruption in spatial indexes. (Bug #37286473)
fixInnoDB: Fixed an issue relating to InnoDB redo log recovery. (Bug #37061960)
fixInnoDB: Fixed an issue relating to reading index_id values. (Bug #36993445, Bug #37709706)
fixInnoDB: Fixed an issue relating to lower_case_table_names. (Bug #32288105)
fixInnoDB: Partition table indexes were not checked when retrieving a record count while that table's definition was being altered by another client session. The record count was executed without error. As of this release, the index is checked to ensure it is usable when retrieving a record count.…
fixInnoDB: Refactored code related to BPR_PCUR_* positioning for restore operations. (Bug #117259, Bug #37505746) References: This issue is a regression of: Bug #37318367.
fixInnoDB: Changes made to innodb_spin_wait_delay in MySQL 8.0.30 negatively impacted performance. (Bug #116463, Bug #37212019)
fixInnoDB: Under certain circumstances, using ALTER TABLE with INPLACE to modify the size of a column could result in an index which exceeds the valid size limit (767 bytes). This occurred for tables with a row format of Redundant or Compact and the row format was not explicitly defined in the table…
fixInnoDB: Fixed a memory leak in the Clone_persist_gtid thread. Our thanks to Baolin Huang and the team at Alibaba for the contribution. (Bug #107991, Bug #34454572)
fixPartitioning: When inserting NOW() into a column not part of the partition key of a partitioned table, all partitions were retrieved, and no pruning occurred. (Bug #37397306)
fixReplication: When the log sanitizer analyzes relay log files, it first searches for a starting point (such as a rotation event or transaction end), but in some cases, it was possible for a binary log file containing a needed GTID to be deleted as having no relevant data; this resulted in the…
fixReplication: In a source-replica setup, the replica encountered irregular failures of UPDATE and DELETE statements with ER_KEY_NOT_FOUND errors on the same table. (The replica's binary log and GTID records showed that the row required was committed, and had not been deleted or updated.) This…
fixReplication: The asynchronous_connection_failover_delete_source() function did not always perform as expected in all cases. (Bug #36479088)
fixReplication: In some cases, the asynchronous_connection_failover_add_source() function did not perform as expected. (Bug #36479083)
fixReplication: In some cases, MASTER_POS_WAIT() did not perform as expected. (Bug #36421684, Bug #37709187)
fixReplication: The asynchronous_connection_failover_add_managed() function in some cases did not produce the expected result. (Bug #34648589)
fixReplication: When the server was under a heavy write load, the binary log position for gtid_executed as shown in the Performance Schema log_status table did not match that of the gtid shown in the binary log file. We fix this by increasing the scope of the lock on the log_status table when…
fixGroup Replication: When a secondary joined the group, it might happen that all group members started to grow the value of the column COUNT_TRANSACTIONS_ROWS_VALIDATING column of the Performance Schema replication_group_member_stats table indefinitely. This impacted memory consumption in all group…
fixGroup Replication: When running Group Replication, some transactions may not have write sets, as with empty transactions with GTID_NEXT specified, or DDL statements. For such transactions, Group Replication cannot check conflicts; thus, it is not known whether they can be applied in parallel, and…
fixThe fprintf_string() function in mysqldump did not use the actual quote character for string escaping. (Bug #37607195)
+28 more items in the release notesfixThe database cache was not flushed properly following execution of DROP USER. (Bug #37132323)
fixFailed password validation was not always handled correctly. (Bug #37041439)
fixProcess memory usage grew when the libmysqlclient API user tried to cache and reuse a prepared statement, preparing it once and then calling either of mysql_stmt_bind_param() or mysql_stmt_bind_named_param() followed by mysql_stmt_execute(), repeatedly without calling the matching…
fixZero rows resulted (where one row was expected) when selecting from a view created with its connection and client character set to latin1, where a query on the view used utf8 as its connection and client character set, the view contained literal values with non-ASCII characters, and the query…
breakingmacOS: Removed obsolete CMake code from MacOS builds. (Bug #37258036)
fixmacOS: It is now possible to build MySQL using the Homebrew version of Clang. (Bug #37256912)
breakingmacOS: Removed warnings of the form ld: warning: ignoring duplicate libraries and warnings specific to xcodebuild. (Bug #37065301)
fixMicrosoft Windows: Disabled windows compiler warnings C26445 and C26821 in cmake/msvc_cppcheck.cmake. Both of these relate to MSVC substitution of gsl::span for std::span, which is not used for MySQL. (Bug #37158156)
fixSolaris: The minimum required version of GCC to build MySQL on Solaris has been raised to 11.4. See Source Installation Prerequisites, for more information. (Bug #37256600)
fixStarting with CMake 3.26, CMake writes the file CMakeFiles/CMakeConfigureLog.yaml, which supersedes CMakeError.log. References to CMakeError.log have therefore been removed. (Bug #37305289)
deprecatedImplemented the standards-compliant my_char_traits<unsigned char> for use as a drop-in replacement for std::char_traits<unsigned char>, which was deprecated in Clang 18 and removed in Clang 19. (Bug #37273525, Bug #37785339)
breakingRemoved a maybe-uninitialized error found in sql/item.cc when building MySQL with GCC 14. (Bug #37157201)
fixThe version of libedit used to compile MySQL was upgraded to 20240808-3.1. (Bug #37101293)
fixThe server could not be built on Ubuntu 22.04 using Clang 13. (Bug #37075154)
breakingRemoved an error in mysql_prepare_create_table() (in the file sql/sql_table.cc) found when compiling MySQL with XCode 16. (Bug #37068527)
fixMySQL could not be compiled using Clang 19. (Bug #37014761)
fix#include <chrono> was missing from plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/task.cc even though std::chrono::duration_cast() was referenced in this file. (Bug #116779, Bug #37329617)
fixThe server could not be built on Fedora 40 (and possibly other Linux platforms) using cmake 3.11, due to an issue with TIRPC. (Bug #116164, Bug #37080195)
fixINSTALL COMPONENT issued concurrently with a SET PERSIST which used a subquery could sometimes lead to an unplanned exit of the server. (Bug #36559078) References: See also: Bug #35647759.
fixIn some cases, after performing an upgrade, stored procedures relating to MySQL Enterprise Firewall were not processed correctly. (Bug #36084822)
fixPushing down a condition which had an aggregate function in a WHERE clause caused the aggregate function to be evaluated when it should not have been. (Bug #36421735)
fixIf a user other than root ran START REPLICA, PERFORMANCE_SCHEMA.PROCESSLIST assigned that user's name to the newly spawned foreground replication threads instead of system user. As of this release, system user is assigned to all foreground system threads. (Bug #37357562)
fixUnder certain circumstances, a metadata lock can be upgraded or downgraded to a different LOCK_TYPE. This change was not reflected in the PERFORMANCE_SCHEMA.METADATA_LOCKS table. Our thanks to George Ma and the Alibaba team for the contribution. (Bug #116625, Bug #37271768)
featureBinary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.11.1. (Bug #37389565)
fixIncompatible Change: Corruption occurred in a spatial index when an update of a geometry with a minimal change in the minimum bounding rectangle (MBR) was followed by a delete operation. When upgrading to this release, it is recommended that you drop any spatial indexes beforehand, then re-create…
fixInnoDB: Concurrently truncating a table while querying the Performance Schema sometimes cause MySQL to halt unexpectedly. (Bug #37271715)
fixInnoDB: It was possible for an ALTER TABLE operation using the INPLACE algorithm on a table containing both a spatial index and an auto-increment column to cause corruption or, in debug builds, to trigger a debug assert. This was due to the auto-increment column value being overwritten in the old…
fixInnoDB: Certain IO buffer serializations triggered an assertion in debug builds that caused the system to hang. (Bug #37139618)
fixInnoDB: Improved InnoDB start up time. (Bug #36880863) References: This issue is a regression of: Bug #36808732.
fixInnoDB: An assertion failure was raised when creating a FULLTEXT index on a table with an FTS_DOC_ID value greater than 4294967295. (Bug #36879147) References: See also: Bug #37387224.
fixInnoDB: Dropping a primary key, and then adding a new AUTO_INCREMENT column as a primary key in descending order using the INPLACE algorithm failed. Our thanks to Shaohua Wang and the team at Alibaba for the contribution. (Bug #36658450)
fixInnoDB: Extending a user tablespace produces file extension redo log records (MLOG_FILE_EXTEND), but they were not produced when extending the system tablespace. (Bug #36511673)
fixInnoDB: A DELETE operation on a table with a self referential foreign key and full-text index could have triggered an assertion. (Bug #36234681)
fixInnoDB: When clearing an AHI index from all buffer pool pages, the block state would potentially change to BUF_BLOCK_MEMORY before acquiring the block mutex thus causing an unexpected halt. (Bug #35037114)
fixInnoDB: Common prefix compression for redo log inserts (MLOG_REC_INSERT) was disabled but is now enabled when the versions match. (Bug #34946626) References: This issue is a regression of: Bug #13899.
fixInnoDB: Virtual column information for a row containing an externally stored BLOB was not always logged during an UPDATE operation, which sometimes resulted in an Index PRIMARY is corrupted error. (Bug #34574604)
fixInnoDB: ON DELETE CASCADE with generated columns containing secondary indexes sometimes failed, due to virtual column templates not being initialized before deletion. Our thanks to Rahul Malik for the contribution. (Bug #33691659)
fixInnoDB: An update operation attempted to update a virtual column while building an update node for a child table, but should not have done so since foreign key constraints cannot reference virtual columns. (Bug #33327093)
fixInnoDB: It was possible for ALTER TABLE, which rebuilds InnoDB tables using the INPLACE algorithm, to be rejected with a duplicate key error due to a non-duplicate record being inserted concurrently while the rebuild was paused to release a page latch. Our thanks to Dmitry Lenev and the team at…
fixInnoDB: The check enforcing the rule that ALGORITHM=INSTANT cannot be used on a column referenced by a foreign key constraint from another table did not inspect the last field of said constraint. (Bug #115457, Bug #36796094)
+29 more items in the release notesfixThe asynchronous interface used unsafe static local variables to store state information. (Bug #115703, Bug #36891894)
fixMySQL did not compile on Fedora 41. (Bug #37046924)
fixMySQL did not compile on Ubuntu 24.10. (Bug #37042308)
securityAdded CONTRIBUTING.md and SECURITY.md files to the MySQL sources to conform to Oracle's Open Source guidelines. (Bug #36998165)
fixAligned CMAKE_MINIMUM_REQUIRED with the correct required CMake version (3.14.6) as well as CMake policies for third-party libraries used by MySQL. (Bug #36978193)
securityBinary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.9.1. Important issues fixed in curl version 8.9.1 are described at https://curl.se/docs/security.html. (Bug #36967379, Bug #36955197)
fixThe included zlib library has been upgraded from version 1.2.13 to version 1.3.1. (Bug #36950863)
fixCMake options BUILD_SHARED_LIBS and CMAKE_SKIP_INSTALL_ALL_DEPENDENCY are now set to OFF in the top level of the build. (Bug #36930664)
fixPulling in the most recent CMake packages for gRPC and Protobuf caused the builds for these libraries to fail. Fixed by rewriting the package lookup to work for both older and newer CMake packages. (Bug #36905657)
fixUpgraded the bundled libcurl library to version 8.9.0. (Bug #36886877)
fixThe bundled lz4 library was upgraded to version 1.10.0. (Bug #36886747)
fixThe -DWITHOUT_SERVER option for CMake did not work on Enterprise Linux 7. (Bug #36824515)
fixLinking with mold did not work on Enterprise Linux 9. (Bug #36818902) References: See also: Bug #34099162.
fixThe version of libfido2 used with MySQL was upgraded to 1.15.0. (Bug #36752604)
fixThe RE2 regular expression library is now bundled with the MySQL sources. (Bug #36729026)
fixThe version of clang-format used for the MySQL codebase was upgraded from 10 to 15. (Bug #36500268)
fixThe bundled version of TI-RPC was upgraded to 1.3.5. (Bug #115698, Bug #36886602)
fixIt was not possible to build MySQL using Protobuf 22 or later. Our thanks to Gordon Wang for the contribution. (Bug #115163, Bug #36678092)
fixMicrosoft Windows: On Windows, MySQL Configurator revert button functionality did not always revert to the original value. (Bug #36702176)
fixMicrosoft Windows: On Windows, the MySQL Configurator data directory file browsing mechanism required the ProgramData folder but can now function outside of that folder. (Bug #36702072)
fixMicrosoft Windows: On Windows, clicking the [X] close button on a MySQL Configurator wizard's page now yields a confirmation popup if the wizard is busy executing an operation. (Bug #36671317)
fixMicrosoft Windows: On Windows, MySQL Configurator no longer defines a custom server_type variable in the generated MySQL Server configuration file. This information is now stored in the configurator_settings.xml file. (Bug #36670309)
fixMicrosoft Windows: On Windows, the Removing Windows Firewall step in MySQL Configurator would fail if the my.ini file was missing a mysqlx_port definition. (Bug #36666260)
fixMicrosoft Windows: On Windows, MySQL Configurator no longer performs unnecessary background operations after clicking Next if the selected options did not change. (Bug #36395605)
fixMicrosoft Windows: On Windows, if MySQL Configurator failed to find a valid my.ini or my.cnf file from the MySQL Server Installations page, then clicking the Browse button disabled the Next button even when the selected file was valid. (Bug #36395569)
fixMicrosoft Windows: On Windows, MySQL Configurator now only shows the removal steps if the associated MySQL Server was previously configured. (Bug #36395417)
fixMicrosoft Windows: On Windows, MySQL Configurator described an empty password as strong rather than weak. (Bug #35533726)
fixThe output from DATABASE() was truncated when this function was used as part of a UNION query. (Bug #36871927)
fixEmploying a user variable in a DML statement within a stored procedure that used the Statement handle interface sometimes led to an unplanned server exit when any statement was executed following execution of such a stored procedure. To address this issue, we now reset the memory used to the store…
fixFixed issues relating to the OTLP exporter. (Bug #36792180, Bug #36783070)
fixRunning SELECT * FROM sys.innodb_lock_waits; on an instance which was under heavy load affected the performance of the server. As of this release, SELECT * FROM sys.innodb_lock_waits; fetches only 2 locks for each wait, instead of scanning all locks twice for each wait. As part of this fix,…
fixThe performance of the innodb_lock_waits view is improved in this release. (Bug #36337708)
fixSome concurrent connection attempts were not handled correctly. (Bug #36625082)
featureImportant Change: For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.15. For more information, see OpenSSL 3.0 Series Release Notes and OpenSSL Security Advisory [3rd September 2024]. (Bug #37021075)
featurePerformance; Replication: The data structure used in tracking binary log transaction dependencies has been changed from Tree to ankerl::unordered_dense::map, which uses approximately 60% less space, and which should thus contribute to better dependency tracking performance. (Bug #37008442, Bug…
featureAdded the --system-command option for the mysql client, which enables or disables the system client command. This option is enabled by default. To disable it, use --system-command=OFF or --skip-system-command, which causes the system command to be rejected with an error. (Bug #36377685, WL #16482)…
featureThe MySQL server now supports an alternative syntax for the GROUP BY clause ROLLUP modifier. Consider the following query: SELECT IF(GROUPING(year), 'All years', year) AS year, IF(GROUPING(country), 'All countries', country) AS country, IF(GROUPING(product), 'All products', product) AS product,…
fixPerformance; InnoDB: Several functions internal to InnoDB, which were defined as inline in MySQL 8.0.28, were found to be no longer inline in MySQL 8.0.33, due in part to refactoring which accompanied improvements made in MySQL 8.0.30 to improve the InnoDB adaptive hash index. This had an adverse…
fixInnoDB: InnoDB did not allow updating a REDUNDANT table column that was altered with NULL as the default value using the INSTANT algorithm. Instead, MySQL unexpectedly halted. (Bug #36840107)
fixInnoDB: When redo log capacity was reduced with log_files_truncate, under rare circumstances the file.end_lsn equaled log_sys->write_lsn thus disallowing future redo log writes. (Bug #36730830)
+53 more items in the release notesfixInnoDB: In some cases, following the creation of a very large number of tables (8001 or more), the server could not be restarted successfully. (Bug #36808732) References: This issue is a regression of: Bug #33398681.
fixInnoDB: Improved tablespace file scan performance at startup. (Bug #110402, Bug #35200385)
fixGroup Replication: Running a CREATE TABLE ... SELECT statement on a source coming from an asynchronous channel to Group Replication led to errors on the replica. (Bug #36784284)
fixAudit log pruning did not function after removing or renaming a file from the audit log. Now pruning continues in such cases, but with a warning printed in the error log stating that it was not possible to delete the missing audit log file. (Bug #35902913)
fixImproved log messages to provide clear reasons for Access denied errors when using the authentication_ldap_sasl plugin without proxying. (Bug #35317691)
fixMySQL LDAP SASL authentication, when used with the GSSAPI method to access an OpenLDAP server, was rejected with the MySQL server error Plugin authentication_ldap_sasl reported: 'LDAP authentication failed or group retrieval failed: LDAP error: Invalid DN syntax', because OpenLDAP did not…
breakingmacOS: The Xcode version of zlib was removed from the default list of system libraries to use when configuring with -DWITH_SYSTEM_LIBS=ON. (Bug #36537593)
fixMicrosoft Windows: The BUILD_ALL target did not work when compiling on Windows. (Bug #36424619)
fixMicrosoft Windows: Excessive RAM usage led to disk swapping when compiling MySQL on Windows using Ninja. (Bug #36399256)
fixMaintainer mode is now disabled when building the debug version of the server for .deb packages. (Bug #36619757)
fixUpgraded the bundled googletest and googlemock sources to version 1.14.0. (Bug #36562482)
fixAdded a missing dependency on GenError. (Bug #36551721)
fixWhen compiling on Fedora 38, grep -E is now used in place of egrep. (Bug #36507549)
fixIt is now possible on Linux systems to build MySQL using a bundled tcmalloc library that is provided with the source by specifying -DWITH_TCMALLOC=BUNDLED. This is supported on Linux only. (Bug #36313839)
fixThe bundled tcmalloc() is now used when building MySQL on Enterprise Linux 8. (Bug #114844, Bug #35674008)
breakingRemoved warnings raised in sql/statement/ed_connection.cc when building on Ubuntu 23.04. (Bug #114436, Bug #36428465)
fixLinux aarch64 platform binaries are now built using patchelf --page-size=65536 for compatibility with systems using either 4k or 64k for the page size. (Bug #114233, Bug #36393794)
fixThe values for component options set using the --loose prefix were not read when the component was installed. (Bug #28341329)
fixMicrosoft Windows: On Windows, MySQL Configurator was updated to support in-place upgrades as per Upgrade Paths. (Bug #36685422)
fixThe conn_delay/Waiting in connection_control plugin stage was not reset after a delay introduced by the connection control plugin which resulted in incorrect monitoring information. (Bug #35205358)
fixAttempting to upgrade a MyISAM table containing a mix of regular columns and generated columns from MySQL 5.7 to 8.0 or later led to table corruption. (Bug #105301, Bug #33503328)
fixGroup Replication: The following tables did not contain data on replication channels which did not have a configured hostname, such as Group Replication recovery channels: As of this release, these tables contain data for partially configured Group Replication channels. (Bug #36018242)
fixUnder certain conditions, a race condition could result in the amount of RAM used by TABLE_HANDLES increasing to a maximum of 9GB. (Bug #36170903)
fixThe PROCESSLIST_INFO column of THREADS was not updated when executing a prepared statement. Thanks to Daniel Lenski and Amazon for the contribution. (Bug #104121, Bug #33057164)
deprecatedThe deprecation warning issued when authenticating with the mysql_native_password plugin is now issued only once. (Bug #35792948)
fixConnecting to a thread group that had no connection handler threads stalled. We fix this by making sure that connection handler threads terminate only if there is at least one connection thread left. (Bug #36550125)
fixPrevious refactoring incorrectly removed the connection locking performed when processing incoming connection requests, which ledto a race condition between the thread adding new connections and the connection handler thread processing them. This appeared to cause a situation in which connection…
fixIt was possible to set the thread_pool_longrun_trx_limit system variable to values outside its stated range. In addition, settings for this variable were not reflected in the output of SHOW VARIABLES or SELECT. (Bug #36347102, Bug #36371145)
fixSET PERSIST_ONLY did not work correctly with thread_pool_max_transactions_limit. (Bug #35019884)
fixThe system variable caching_sha2_password_digest_rounds could not be set to a non-default value using X Protocol. (Bug #36402455)
fixAn outdated link to the MySQL documentation in the mysql_function_names unit test source file has been updated. Our thanks to Minha Jeong for the contribution. (Bug #113500, Bug #36137217)
fixInnoDB: MySQL unexpectedly halted on an UPDATE after an ALTER TABLE operation. (Bug #36571091) References: This issue is a regression of: Bug #35183686.
fixInnoDB: The log index size calculation now accounts for column order changes. (Bug #36526369) References: This issue is a regression of: Bug #35183686.
fixInnoDB: File system operations performed by InnoDB now consistently fsync the parent directory when performing directory altering tasks. (Bug #36174938)
fixInnoDB: In debug builds, setting the innodb_interpreter_output debug variable would cause the server to unexpectedly halt. This is now a read-only variable. (Bug #36041032)
fixInnoDB: Improved os_innodb_umask handling, and made it read-only. (Bug #35932118) References: This issue is a regression of: Bug #29472125.
fixInnoDB: For tables created with an index on a column that was too wide for the redundant row format (allowed before MySQL 5.7.35), an in-place upgrade silently imported the table but it was not accessible, which interfered with making backups. Now all operations that involve using the invalid…
fixInnoDB: An InnoDB assertion error referencing an invalid column index was triggered when the column index was valid. (Bug #34800754)
fixInnoDB: With an empty XA transaction, shutting the server down after an XA START would cause the server to halt unexpectedly. (Bug #32416819)
fixInnoDB: Shutting down the replication applier or binlog applier while processing an empty XA transaction caused the system to unexpectedly halt. (Bug #32416819)
fixInnoDB: Removed unnecessary heap usage in the Validate_files::check() function. Our thanks to Huaxiong Song for the contribution. (Bug #115041, Bug #36626203)
fixInnoDB: If a partition table was read with innodb_parallel_read_threads=1, read performance greatly decreased from any table after 256 reads. InnoDB behaved as if it reached the maximum capacity of parallel read threads despite not using any. Our thanks to Ke Yu for the contribution. (Bug #114154,…
fixInnoDB: The result from a spatial index containing a column with a spatial reference identifier (SRID) attribute was empty. In addition, using FORCE INDEX to force a covering index scan on a spatial index led to an assertion. (Bug #112676, Bug #114200, Bug #35894664, Bug #36361834)
+59 more items in the release notesbreakingmysql_refresh(): Reimplemented using mysql_real_query() to execute FLUSH statements in place of COM_REFRESH, which was removed in MySQL 8.3.
breakingThe libevent library has been removed. (Bug #36357190)
deprecatedImportant Change: The deprecated mysql_native_password authentication plugin is now disabled by default. It can be enabled by starting MySQL with the new --mysql-native-password=ON server option, or by adding mysql_native_password=ON to the [mysqld] section of your MySQL configuration file. For…
deprecatedPartitioning: Silent omission of columns with index prefixes as part of a table's partitioning key was deprecated in MySQL 8.0.21, and generated a warning. In this release, the use of any such columns in the proposed partitioning key is now expressly disallowed, and causes the CREATE TABLE or…
deprecatedReplication: Syntax for a number of features relating to MySQL Replication that was deprecated in previous versions of MySQL has now been removed. These features include aspects of SQL statement syntax as well as several system status variables in the MySQL server. These changes are detailed…
deprecatedCHANGE REPLICATION SOURCE TO options removed: MASTER_AUTO_POSITION (SOURCE_AUTO_POSITION), MASTER_HOST (SOURCE_HOST), MASTER_BIND (SOURCE_BIND), MASTER_USER (SOURCE_USER), MASTER_PASSWORD (SOURCE_PASSWORD), MASTER_PORT (SOURCE_PORT), MASTER_CONNECT_RETRY (SOURCE_CONNECT_RETRY), MASTER_RETRY_COUNT…
deprecatedSTART REPLICA options removed: MASTER_LOG_FILE (SOURCE_LOG_FILE) and MASTER_LOG_POS (SOURCE_LOG_POS).
deprecatedGroup Replication: The group_replication_allow_local_lower_version_join system variable is now deprecated, and setting it raises a warning (ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT). You should expect this variable to be removed in a future version of MySQL. Since there is no longer any reason to…
deprecatedA number of server options and variables supported in previous versions of MySQL have been removed in this release. Attempting to set any of them in MySQL 8.4 raises an error. These options and variables are listed here: (Bug #36337893, WL #9677, WL #13965, WL #15461, WL #15839, WL #16056, WL…
deprecatedbinlog_transaction_dependency_tracking: Deprecated in MySQL 8.0.35 and MySQL 8.2.0. There are no plans to replace this variable or its functionality, which has been made internal to the server: Now, when multithreaded replicas are in use, the source mysqld uses always writesets to generate…
deprecatedgroup_replication_recovery_complete_at: Deprecated in MySQL 8.0.34. Beginning with this release, the policy applied during the distributed recovery process is always to mark a new member online only after it has received, certified, and applied all transactions that took place before it joined the…
deprecatedavoid_temporal_upgrade and show_old_temporals: Both deprecated in MySQL 5.6. Each of these variables no longer had any effect, and has been removed. There are no plans to replace either variable.
deprecatedno-dd-upgrade: Deprecated in MySQL 8.0.16, now removed. Use --upgrade=NONE instead.
deprecatedold and --new: Both deprecated in MySQL 8.0.35 and MySQL 8.2.0, and now removed.
deprecatedlanguage: This option was deprecated in MySQL 5.5, and has now been removed.
deprecatedThe --ssl, --skip-ssl, and --admin-ssl server options, as well as the have_ssl and have_openssl server system variables, were all deprecated in MySQL 8.0.26, and are all removed in this release. Use --tls-version and --admin-tls-version instead.
deprecateddefault_authentication_plugin: Deprecated in MySQL 8.0.27, and now removed. Use authentication_policy instead. You should also be aware that the syntax for setting the authentication_policy variable has changed; see its description in the Manual for more information.
deprecatedIn cases where an aliased table was referenced in EXPLAIN output, the table name was qualified with a schema name, which was not necessary and could result in confusion. These schema qualifications have been removed from the output. (Bug #36053664)
deprecatedThe unused INFORMATION_SCHEMA.TABLESPACES table, deprecated in MySQL 8.0.22, has now been removed. For InnoDB tables, the Information Schema INNODB_TABLESPACES and INNODB_DATAFILES tables provide tablespace metadata. (WL #14065)
deprecatedLOW_PRIORITY used with LOCK TABLES ... WRITE had had no effect since MySQL 5.5, and was deprecated in MySQL 5.6. It is removed in this release; including LOW_PRIORITY in LOCK TABLES now causes a syntax error. (WL #16057)
deprecatedSupport for use of the AUTO_INCREMENT modifier with FLOAT and DOUBLE columns was deprecated in MySQL 8.0, and is now removed. Attempting to use these together in CREATE TABLE and ALTER TABLE statements now causes an Incorrect column specifier for column error (ER_WRONG_FIELD_SPEC). Important Prior…
deprecatedThe mysql_ssl_rsa_setup utility, which was deprecated in MySQL 8.0.34, is removed in this release. For MySQL distributions compiled using OpenSSL, the MySQL server can perform automatic generation of missing SSL and RSA files at startup. For more inforamtion, Creating SSL and RSA Certificates and…
deprecatedThis release removes support for the ENGINE clause from the following SQL statements: Other than in the exceptional cases listed previously, use of the ENGINE clause with ALTER TABLESPACE or DROP TABLESPACE causes the statement to be rejected with an error. ENGINE clauses for the ALTER TABLESPACE…
deprecatedDROP TABLESPACE (all variants)
deprecatedALTER TABLESPACE ... DROP DATAFILE
deprecatedAll other variants of ALTER TABLESPACE, with the two exceptions listed here:
deprecatedALTER TABLESPACE ... ADD DATAFILE ENGINE={NDB|NDBCLUSTER}
deprecatedALTER UNDO TABLESPACE ... SET {ACTIVE|INACTIVE} ENGINE=INNODB
deprecatedThe SET_USER_ID privilege, deprecated in MySQL 8.2.0, has been removed in this release, and its use in GRANT statements now causes a syntax error. Use the SET_ANY_DEFINER and ALLOW_NONEXISTENT_DEFINER privileges instead. (WL #15875)
deprecatedRemoved the mysql_upgrade utility, which was deprecated in MySQL 8.0.16. (WL #16096)
deprecatedRemoved the deprecated mysqlpump utility along with its associated lz4_decompress and zlib_decompress helper utilities. Instead, use mysqldump or the MySQL Shell dump utilities. (WL #16096)
deprecatedThe following plugins have been removed. They are noted in the list provided here, along with any server system variables, CMake options, and other features associated with them which have also been removed: (WL #15937, WL #15938, WL #15939, WL #15941, WL #16140)
deprecatedauthentication_fido, authentication_fido_client: Use authentication_webauthn instead; see WebAuthn Pluggable Authentication. The authentication_fido_rp_id server system variable, mysql client --fido-register-factor option, and the -DWITH_FIDO CMake option have also been removed.
deprecatedkeyring_file: Use component_keyring_file instead; see Using the component_keyring_file File-Based Keyring Component. The keyring_file_data system variable has also been removed. In addition, the CMake options -DINSTALL_MYSQLKEYRINGDIR and -DWITH_KEYRING_TEST have been removed.
deprecatedkeyring_encrypted_file: Use component_keyring_encrypted_file instead; see Using the component_keyring_encrypted_file Encrypted File-Based Keyring Component. The keyring_encrypted_file_data and keyring_encrypted_file_password server system variables have also been removed.
deprecatedkeyring_oci: Use component_keyring_oci instead; see Using the Oracle Cloud Infrastructure Vault Keyring Component. The following server system variables have also been removed: keyring_oci_ca_certificate, keyring_oci_compartment, keyring_oci_encryption_endpoint, keyring_oci_key_file,…
deprecatedopenssl_udf: Use the MySQL Enterprise Encryption component instead; see MySQL Enterprise Encryption.
deprecatedSupport for weak encryption ciphers has been removed. This means that, when configuring encrypted connections, MySQL no longer allows specifying any cipher that does not meet the following conditions: This has implications for setting the system variables ssl_cipher, admin_ssl_cipher,…
deprecatedProper TLS version (TLS v1.2 or TLSv1.3, as appropriate)
deprecatedForward secrecy
+163 more items in the release notes