Documentation Home
MySQL Shell Release Notes
Download these Release Notes
PDF (US Ltr) - 0.8Mb
PDF (A4) - 0.8Mb


MySQL Shell Release Notes  /  Changes in MySQL Shell 26  /  Changes in MySQL Shell 26.10.0 (2026-10-20)

Changes in MySQL Shell 26.10.0 (2026-10-20)

AdminAPI Added or Changed Functionality

  • AdminAPI status() now identifies internal replication accounts that use the deprecated or removed mysql_native_password plugin. For InnoDB Cluster, ClusterSet, ReplicaSet, and Read Replica topologies running MySQL 8.0.34 or later, use .reset_replication_accounts_password({"recreate": True}) to recreate affected accounts with caching_sha2_password. Stale accounts not associated with configured replication channels are ignored. (Bug #35806274)

Utilities Bugs Fixed

  • Uploads to S3 buckets with an Object Lock retention period could fail because required checksum headers were not sent. MySQL Shell now sends SHA256 checksums for object and multipart uploads, preserves part checksums through listing, copying, and completion, and rejects part responses with missing or empty checksums.

    Our thanks to Kamil Holubicki for the contribution. (Bug #40028091, Bug #119568)

  • During an 8.4.9-to-8.4.11 upgrade check, valid optimizer_switch settings containing hypergraph_optimizer=off,hash_set_operations=on could be rejected because incomplete metadata was used. The check now uses version-specific allowed values and validates the effective server setting correctly. Errors were returned similar to the following:

    Error: The following system variables that were detected as being used are
           using values that are  invalid in the target version.
           - optimizer_switch: variable value includes
           'hypergraph_optimizer=off,hash_set_operations=on'

    (Bug #39875290)

  • MySQL HeatWave compatibility checks could incorrectly report the permitted EXPORT_QUERY_RESULTS, MANAGE_DATA_MASKING_POLICY, and VECTOR_STORE_LOAD_EXEC privileges as restricted. MySQL Shell dump compatibility checks now include all three privileges in the allowed list. (Bug #39790297)

  • Interrupting a load could cause the monitoring thread to repeatedly attempt to cancel server connection IDs that had already been removed, producing excessive log messages until the worker exited. MySQL Shell now remembers terminal connection IDs and skips repeated cancellation attempts while resuming cancellation if a worker reconnects. (Bug #39783888)

  • Upgrading to MySQL 9.6 or later without first removing uses of MD5(), SHA1(), or SHA() from functional indexes or CHECK constraints could prevent server startup; generated-column uses could leave tables inaccessible. The new removedLegacyHashingFunctions check reports errors for generated columns, functional indexes, CHECK constraints, and default expressions. Affected schemas must be changed before upgrading. Uses in views, routines, triggers, and events are reported as warnings and can be repaired with component_classic_hashing. Errors were returned similar to the following:

            [ERROR] [MY-010020] Data Dictionary initialization failed.
            [ERROR] [MY-010119] Aborting

    Our thanks to Akshat Nehra for the contribution. (Bug #39761531, Bug #120948)

  • The Upgrade Checker could omit a deprecation warning when group_replication_communication_stack was set to XCOM for an upgrade to MySQL 26.7, in which XCOM is deprecated and MYSQL becomes the default. Lifecycle metadata across parallel release lines is now evaluated to select the applicable deprecation or removal marker. (Bug #39333793)

  • The reservedKeywords upgrade check could omit keywords introduced after MySQL 8.0.31 or be skipped for newer source versions. It now checks QUALIFY, TABLESAMPLE, LIBRARY, and EXTERNAL, handles the version window in which MANUAL and PARALLEL are reserved, and reports only words newly reserved on the target. Warnings are returned similar to the following:

    Warning: The following objects have names that conflict with new reserved keywords. 
    Ensure queries sent by your applications use `quotes` when referring to them or 
    they will result in errors.

    Our thanks to Yewon Kwak for the contribution. (Bug #121252, Bug #40008164)

  • Valid colon-delimited TLS and SSL cipher lists could be rejected by the Upgrade Checker because each list was treated as one token. Colon separation is now supported for ssl_cipher, admin_ssl_cipher, tls_ciphersuites, and admin_tls_ciphersuites. Errors were returned similar to the following:

    Error: The following system variables that were detected as being used are
          using values that are  invalid in the target version.
          - ssl_cipher: variable value includes
          'ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256'

    Our thanks to Tony Chen for the contribution. (Bug #120961, Bug #39760683)

Functionality Added or Changed

  • Important Change: Classic and X Protocol connections can now configure post-quantum cryptography when the client libraries use OpenSSL 3.5 or later. The new tls-kex, force-pqc, and use-pqc-sign options are available through the command line, connection URIs, and connection dictionaries; the Boolean options default to false. For example:

    mysqlsh --mysql --uri user@host:3306 --ssl-mode=REQUIRED --tls-version=TLSv1.3 --force-pqc --tls-kex=X25519MLKEM768

    The \status command and shell.status() display negotiated TLS key-exchange and signature algorithms when the server supplies them, while remaining compatible with older servers. (WL #17311)

    References: See also: Bug #39980717.

  • MySQL Shell can now be built on FreeBSD. The FreeBSD build path includes platform-specific executable-path and memory handling, system libfido2 support, adjusted Kerberos requirements, and a static Abseil fallback for Debug builds.

    Our thanks to Daniël van Eeden for the contribution. (Bug #39900396, Bug #119768)

  • Classic Protocol Session API connections made through URIs or connection dictionaries now accept the Boolean can-handle-expired-passwords and client-interactive options. The former enables CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS; the latter enables interactive-client behavior, including expired-password handling. The options are supported by mysql.getSession(), mysql.get_session(), and shell.open_session(). For example:

    mysql.get_session({"user":"user","host":"host","can-handle-expired-passwords":True})

    (Bug #39760752)

Bugs Fixed

  • RPM installations could contain corrupted bundled mysqlbinlog and mysql_config_editor executables because their RPATH values were unnecessarily rewritten. This could prevent binary log dump and load operations and login-path credential storage. RPATH processing now removes existing RPATH or RUNPATH values from bundled Linux libraries and writes a relative RPATH only when required. Errors were returned similar to the following:

    /usr/libexec/mysqlsh/mysqlbinlog: no version information available
    (required by /usr/libexec/mysqlsh/mysqlbinlog) 
    Segmentation fault (core dumped)

    Our thanks to Evgeniy Patlan for the contribution. (Bug #40008224, Bug #121135)

  • Non-static RPM package builds could fail when the CMake command terminated before all options were supplied, causing the remaining options to be executed as a separate shell command. The command now passes all options to CMake.

    Our thanks to Evgeniy Patlan for the contribution. (Bug #121138, Bug #40007307)

  • Building MySQL Shell against an older MySQL Server series could create duplicate parser targets or use client libraries lacking required features. Errors were returned similar to the following:

    CMake Error at mysqlshdk/libs/yparser/mysql/CMakeLists.txt:123 (add_executable):
    add_executable cannot create target "gen_lex_hash_9.7" because another
    target with the same name already exists.

    MySQL Shell now rejects older server major and minor versions during initial configuration; source-package builds remain exempt.

    Our thanks to Evgeniy Patlan for the contribution. (Bug #121137, Bug #40008178)

  • Parser plugins could fail to link in GCC link-time optimization builds that treated warnings as errors because generated parsers defined conflicting enum names and left semantic values uninitialized. Each parser now uses a distinct enum name and initializes its semantic value. Errors were returned similar to the following:

    sql_yacc.cc:104:6: error: type 'yysymbol_kind_t' violates the C++ One Definition Rule [-Werror=odr]
    sql_hints.yy.cc:104:6: note: an enum with different value name is defined in another translation unit
    lto1: all warnings being treated as errors

    Our thanks to Evgeniy Patlan for the contribution. (Bug #121136, Bug #40008265)

  • Clean Debian package builds could fail because Bison and Python 3, which are required by the SQL parser, were not declared as build dependencies. Debian packaging now declares bison and python3, and equivalent RPM requirements are included even when Python is bundled.

    Our thanks to Evgeniy Patlan for the contribution. (Bug #121134, Bug #40008025)

  • Bundling a versioned library or multiple files with the same basename could create invalid or duplicate CMake targets and prevent MySQL Shell package configuration. Copy-target names are now sanitized and receive numeric suffixes when necessary, preserving a distinct dependency for each bundled file.

    Our thanks to Evgeniy Patlan for the contribution. (Bug #121133, Bug #40008043)

  • Generated Debian package descriptions and changelog links could reference older MySQL Shell releases, and the declared debhelper dependency was below the package compatibility level. These fields are now derived from the current version, and the package requires debhelper 11.

    Our thanks to Evgeniy Patlan for the contribution. (Bug #121132, Bug #40008092)

  • Debian and RPM package builds previously assumed that the MySQL build directory was the bld subdirectory of the server source tree, preventing use of server builds stored elsewhere. Packaging now honors MYSQL_BUILD_DIR for Debian and with_mysql_build for RPM, retains the former location as the default, and supports paths containing spaces.

    Our thanks to Evgeniy Patlan for the contribution. (Bug #121131, Bug #40008103)

  • On s390x and other big-endian architectures, which are not officially supported, MySQL Shell source builds could fail because the binary log reader referenced an undeclared variable and left its buffer parameter unused. The reader now uses the buffer parameter when decoding four-byte integers. Errors were returned similar to the following:

    mysqlshdk/libs/db/mysql/binary_log.cc: error: ‘A’ was not declared in this scope
    return static_cast<uint32_t>(A[0]) | (static_cast<uint32_t>(A[1]) << 8)
    mysqlshdk/libs/db/mysql/binary_log.cc: error: unused parameter ‘ptr’ [-Werror=unused-parameter]

    Our thanks to Lena Voytek for the contribution. (Bug #121119, Bug #40007246)