MySQL Forums
Forum List  »  Announcements

MySQL Shell 8.0.13 for MySQL Server 8.0 and 5.7 has been released
Posted by: Sreedhar Sreedhargadda
Date: October 22, 2018 08:45AM

Dear MySQL users,

MySQL Shell 8.0.13 is a maintenance release of MySQL Shell 8.0 Series
(a component of the MySQL Server). The MySQL Shell is provided under
Oracle's dual-license.

MySQL Shell 8.0 is highly recommended for use with MySQL Server 8.0 and 5.7.
Please upgrade to MySQL Shell 8.0.13.

MySQL Shell is an interactive JavaScript, Python and SQL console
interface, supporting development and administration for the MySQL
Server. It provides APIs implemented in JavaScript and Python that
enable you to work with MySQL InnoDB cluster and use MySQL as a document

The AdminAPI enables you to work with MySQL InnoDB cluster, providing
an integrated solution for high availability and scalability using
InnoDB based MySQL databases, without requiring advanced MySQL
expertise. For more information about how to configure and work with
MySQL InnoDB cluster see

The X DevAPI enables you to create "schema-less" JSON document
collections and perform Create, Update, Read, Delete (CRUD) operations
on those collections from your favorite scripting language.
For more information about how to use MySQL Shell and the MySQL Document
Store support see
For more information about the X DevAPI see

If you want to write applications that use the the CRUD based X DevAPI
you can also use the latest MySQL Connectors for your language of
choice. For more information about Connectors see

For more information on the APIs provided with MySQL Shell

Using MySQL Shell's SQL mode you can communicate with servers using the
legacy MySQL protocol. Additionally, MySQL Shell provides partial
compatibility with the mysql client by supporting many of the same
command line options.

For full documentation on MySQL Server, MySQL Shell and related topics,

For more information about how to download MySQL Shell 8.0.13, see
the "Generally Available (GA) Releases" tab at

We welcome and appreciate your feedback and bug reports, see

Changes in MySQL Shell 8.0.13    (2018-10-22)

Functionality Added or Changed

     * The upgrade checker utility provided by MySQL Shell,
       which is the checkForServerUpgrade() function of the util
       global object, has several enhancements:

          + You can now use the upgrade checker utility to check
            servers at earlier MySQL 8.0.x releases, as well as
            MySQL 5.7 servers, for compatibility errors and
            issues for upgrading.

          + You can now specify a target MySQL Server version to
            which you plan to upgrade. In MySQL Shell 8.0.13,
            you can specify release 8.0.11 (the MySQL Server 8.0
            GA release), 8.0.12, or 8.0.13. The upgrade checker
            utility carries out the checks that are relevant for
            the specified target release. If you specify the
            short form version number 8.0, or omit the
            targetVersion option, the utility checks for upgrade
            to the MySQL Server release number that matches the
            current MySQL Shell release number, currently

          + A check has been added for the removed syntax GROUP
            BY ASC/DESC, returning an error message if this
            syntax is found in a trigger, event, view, stored
            procedure, or function.

          + A check has been added for columns defined as ENUM
            or SET that contain elements longer than 255
            characters, returning an error message if any such
            columns are found.

          + The upgrade checker utility no longer returns a
            value, making its output easier to parse and process
            when automation is used.

       You can access the upgrade checker utility from within
       MySQL Shell or start it from the command line. For
       instructions and further information, see MySQL Shell

     * The behavior of Cluster.dissolve() has been updated to
       make it more consistent with other AdminAPI commands. Now
       you do not have to pass in the force option to start the
       command, and there is an interactive prompt available.
       When all instances belonging to the cluster are online,
       if MySQL Shell is running in interactive mode then you
       are prompted to confirm the operation of dissolving the
       cluster. If MySQL Shell is running in non-interactive
       mode, when all instances are reachable, or online, then
       the command removes the instances from the cluster. In
       the case that instances are not reachable an error is
       thrown. Pass in the force option to remove instances
       which are not reachable.
       References: See also: Bug #27833605, Bug #27837231.

     * MySQL Shell onscreen output can now be displayed using a
       pager such as less or more. You can configure the pager
       you want to use with the shell.options[pager] option, the
       \pager command, or the --pager command option. This
       improves how you work with longer text output in MySQL
       Shell, specifically the online help and the results of
       SQL operations. See Using a Pager

     * The integration of MySQL Shell into command-line
       environments has been improved. Use the mysqlsh [options]
       -- shell_object object_method [method_arguments] syntax
       to pass operations directly to MySQL Shell global
       objects, bypassing the REPL interface. For example:
       mysqlsh -- util check-for-server-upgrade user@example

       which executes the equivalent
       util.checkForServerUpgrade(user@example, {"outputFormat":
       "JSON"}) with MySQL Shell and returns the output in JSON
       format. This makes it easy to integrate MySQL Shell into
       your automation scripts. To get help for this interface,
       use the MySQL Shell command \help cmdline. See mysqlsh
       Command Interface

     * A new optional parameter exitStateAction can be used with
       the dba.createCluster() and cluster.addInstance()
       commands, which enables you to configure the
       group_replication_exit_state_action variable of an InnoDB
       cluster member. The group_replication_exit_state_action
       variable enables you to specify what action is taken if a
       member involuntarily leaves the group. When
       group_replication_exit_state_action is set to
       ABORT_SERVER (the default value), the instance shuts
       itself down, and when group_replication_exit_state_action
       is set to READ_ONLY the instance switches itself to super
       read only mode instead and goes into the Group
       Replication ERROR state.

     * The new optional memberWeight option can be used with the
       dba.createCluster() and Cluster.addInstance() functions
       to enable you to set the group_replication_member_weight
       system variable of an InnoDB cluster server instances in
       a single-primary cluster. The default value is 50, in
       other words the system variable default. Set the
       memberWeight option to an integer between 0 and 100 to
       configure a member's weight in the failover election
       process. The value determines the chance of the instance
       being elected as the primary in the event of a failover.
       See Single-Primary Mode
        -single-primary-mode.html) for more information.

     * The connect-timeout connection path parameter
       h.html) has been added to the X DevAPI, which enables you
       to specify the number of seconds clients such as MySQL
       Shell wait until the client stops trying to connect to an
       unresponsive MySQL server. The value of connect-timeout
       must be a non-negative integer that defines a time frame
       in milliseconds. The timeout default value is 10000
       milliseconds, or 10 seconds. For example:
       // Decrease the timeout to 2 seconds.

       // Increase the timeout to 20 seconds

       To disable the timeout set the value to 0, meaning that
       the client waits until the underlying socket times out,
       which is platform dependent.

     * MySQL Shell has a new JSON import utility that enables
       you to import JSON documents from a file or standard
       input to a MySQL Server collection or relational table.
       The utility parses and validates the supplied JSON
       documents automatically and inserts them into the target
       database, removing the need to use multiple INSERT
       statements or write scripts to achieve this task. The
       utility can be started in a MySQL Shell session with the
       util.importJson() method in JavaScript or the
       util.import_json() method in Python. From the command
       line, you can use the -- util importJson syntax or the
       --import command to invoke the utility.

Bugs Fixed

     * The upgrade checker utility provided by MySQL Shell (the
       util.checkForServerUpgrade() operation) did not report
       removed functions if they were used in views or events.
       (Bug #28642534)

     * MySQL Shell incorrectly labeled warning messages as error
       messages in JSON output. (Bug #28546510)

     * When MySQL Shell server connection passwords are
       persisted using a Secret Store, if a classic MySQL
       protocol connection was made without specifying a port or
       socket, the saved password could not be retrieved for a
       subsequent connection. The password storage and retrieval
       process now ensures that the server URL used to store the
       password matches subsequent queries with user-provided
       connection options, even if defaults were used for the
       original connection. (Bug #28544628)

     * The dba.deploySandboxInstance() function in version
       8.0.12 deploys the sandbox and includes log_syslog=OFF in
       the instance's configuration file. This variable was
       deprecated in MySQL 8.0.12 and was removed in MySQL
       8.0.13. Now, the variable has been updated to include the
       loose_ prefix which makes the server ignore it for a
       MySQL 8.0.13 sandbox, while maintaining compatibility
       with earlier version sandboxes. (Bug #28543536)

     * A number of improvements have been made to the MySQL
       Shell prompt, including handling of overlength text,
       statement splitting, and support for multiple-line
       prompts. New sample prompt theme files are provided for
       double-line prompts that use one line for information
       display and a new line for the input prompt itself, so
       that additional information can be shown without
       detracting from the space available for text entry. (Bug
       #28515394, Bug #92048)

     * The --table command line option did not produce the
       appropriate output format in non-interactive mode. (Bug

     * Extra spaces before or after the parameter used with the
       \help command are now trimmed. Previously, the presence
       of extra spaces made MySQL Shell unable to find the
       relevant help topic. (Bug #28508724, Bug #92030)

     * Some native MySQL Shell objects were not properly wrapped
       into JavaScript objects, causing memory leaks. The
       memory-handling mechanism has been corrected. (Bug

     * If an empty string was provided as the argument for a
       MySQL Shell command-line option that expects a non-null
       argument and has no default defined, MySQL Shell did not
       return an appropriate error. The error handling for
       command-line arguments has now been improved so that a
       suitable error is issued in this situation and execution
       of the command terminates. (Bug #28378553)

     * If a session was explicitly closed by the user without
       closing MySQL Shell, the prompt continued to display the
       details of the closed session. (Bug #28314383)

     * User credentials stored by MySQL Shell could not be
       automatically retrieved for hosts identified by IPv6
       addresses. (Bug #28261301)

     * MySQL Shell now displays the build type (commercial or
       Community Edition) as part of the product version
       information displayed at startup and when the --help
       argument is used. (Bug #28242573)

     * If a MySQL Shell session was disconnected without closing
       MySQL Shell (for example, using the session.close()
       method), a subsequent query in SQL mode did not return a
       "Not connected" error. MySQL Shell now checks not only
       that the global session object exists, but also that it
       has a valid connection to the MySQL server instance. (Bug

     * On the Windows platform, the background color was not
       reset in the MySQL Shell window when the terminal was
       cleared using Ctrl+L. (Bug #28235701, Bug #91102)

     * The commercial MySQL Shell package could not be installed
       on Debian or Ubuntu if the equivalent Community Edition
       package had already been installed. (Bug #28223781)

     * Occasionally, when adding an instance to an existing
       cluster the instance got stuck in the distributed
       recovery phase resulting in an immutable reported status
       of RECOVERING. This issue was related to the
       automatically generated password for the internal
       replication users created by InnoDB cluster. (Bug
       #28219398, Bug #91348)

     * MySQL Shell was using some deprecated functions and
       properties internally, which caused warning messages to
       appear in the MySQL Shell log file, although the
       functions were not executed by users. The deprecated
       functions and properties have now been removed from the
       internal code. (Bug #28216558)

     * If an invalid value was specified for the MySQL Shell
       option credentialStore.helper, the resulting error
       message at MySQL Shell startup was displayed incorrectly.
       (Bug #28216485)

     * The upgrade checker utility provided by MySQL Shell (the
       util.checkForServerUpgrade() operation) now correctly
       handles account names with spaces and other blank
       characters, and skips the permissions check when the
       server was started with the --skip-grants option. (Bug
       #28212899, Bug #91326)

     * In the default interactive mode, whenever using the
       function dba.rebootClusterFromCompleteOutage() without
       any parameter, the function failed with an error
       specifying the cluster name does not exist. Now the
       default cluster is assumed when the function is issued
       without a parameter. (Bug #28207565)

     * The handling of metadata server changes related to the
       Cluster.addInstance() has been improved, resulting in the
       following changes:

          + the correct session is now used for metadata and
            group operations

          + the Cluster.addInstance() operation aborts and
            recommends the use of Cluster.rescan() if the
            instance is in the group but not the InnoDB cluster

          + the unnecessary parameter super_user_password has
            been removed
       (Bug #28200661)

     * The Windows scripts generated by
       dba.deploySandboxInstance() incorrectly displayed user
       output messages in quotes. Additionally, the scripts have
       been improved and they no longer display executed
       commands. (Bug #28199954)

     * When deleting history entries using the \history command
       in MySQL Shell, you can now specify a number of history
       entries to be deleted from the tail of the history, using
       the format \history delete -number. The handling of
       history entry numbers for deleted entries has been
       improved so that when the tail of the history is deleted,
       those history entry numbers are reused for new entries,
       and there is no gap. If a \history delete command empties
       the history, the numbering of history entries now resets
       as it does when the \history clear command is used. Also,
       the error message issued if you specify an invalid range
       of history entries to be deleted (using the format
       \history delete firstnumber-lastnumber ) has been
       improved. (Bug #28199513)

     * The dba.createCluster() AdminAPI operation always created
       replication users, even when the adoptFromGR option was
       used. However, when adopting an already existing Group
       Replication group no additional users need to be created.
       (Bug #28054500)

     * On the Windows platform, using the Ctrl+C key combination
       in MySQL Shell caused MySQL Shell to close, even if a
       command was in progress. (Bug #27894642)

     * Error messages issued by the AdminAPI relating to an
       invalid number of arguments for a function did not
       include the relevant object and method prior to the
       message text. These messages have now been standardized.
       (Bug #27832594)

     * The MySQL Shell code for identifying whether a given IP
       address is a loopback address did not account for
       additional IP addresses (besides the address
       block) that had been added by the user to the loopback
       interface. All IP addresses assigned to the loopback
       interface are now checked. (Bug #27703779)

     * When running MySQL Shell in batch mode, tab separated
       format is the default for output. In some situations,
       table format was used for output instead. This issue has
       now been fixed. A command line option --tabbed has also
       been added to switch to the tab separated format for
       output when MySQL Shell is in interactive mode, where the
       default is table format. (Bug #27546082, Bug #89514)

     * Zone IDs in IPv6 addresses are now supported for MySQL
       Shell connections. A zone identifier is suffixed to the
       IPv6 address with a percent character (%) as a separator.
       For example: 2001:0db8:3c4d:0015::1a2f:1a2b%14
       If an IPv6 address with a zone ID is provided as a URI
       type string, URL encoding (percent-encoding) must be used
       for the percent character. For example:
       mysqlsh --uri=user@[2001:0db8:3c4d:0015::1a2f:1a2b%2514]
       :33060 shell.connect("user@[2001:0db8:3c4d:0015::1a2f:
       If an IPv6 address with a zone ID is provided using
       individual parameters or a data dictionary, URL encoding
       does not need to be used for the percent character, and
       the IPv6 address can be supplied as seen. For example:
       mysqlsh --user=user --host=2001:0db8:3c4d:0015::1a2f:
       1a2b%14 --port=33060
       See Connecting Using a Path
        using-path.html). (Bug #27539702)

     * When MySQL Shell log entries were output to stderr by
       prepending @ (at sign) to the value of the --log-level
       option, and the JSON output format was selected for MySQL
       Shell, some log entries were not being output in JSON
       format. The logger now checks and uses the current value
       of the MySQL Shell outputFormat configuration option as
       the output format when writing log entries to stderr.
       (Bug #27480887)

     * In SQL mode, MySQL Shell erroneously entered multi-line
       mode if an unknown command was executed, or if multiple
       consecutive SQL statement delimiters were used. Now, an
       appropriate error is returned in these situations. (Bug

     * If you do not specify a protocol with the \connect
       command or when starting MySQL Shell, MySQL Shell
       automatically attempts to use X Protocol for the
       session's connection, and falls back to MySQL protocol if
       X Protocol is unavailable. The connection type option
       -ma, which specified that behavior explicitly, is now
       The use of a single dash with the connection type options
       -mx and -mc, for an X Protocol and MySQL protocol
       connection respectively, is also deprecated. These
       options must now be specified with a double dash (that
       is, --mx and --mc) with the \connect command or when
       starting MySQL Shell. They are now defined as aliases of
       the long form --mysql (--mc) and --mysqlx (--mx)
       connection type options. (Bug #27363459)

     * When using dba.createCluster() or Cluster.addInstance(),
       the AdminAPI was setting the values of
       auto_increment_offset and auto_increment_increment
       incorrectly. Now the variables are set according to the
       following logic:

          + for a cluster running in single-primary mode:
               o auto_increment_offset=2
               o auto_increment_increment=1

          + for a cluster running in multi-primary mode:
               o auto_increment_offset=1 and server_id % 7
               o auto_increment_increment=7
       (Bug #27084767)

     * On the Windows platform, when a long command was accessed
       from the MySQL Shell command history and edited at the
       right edge of the console window, a cursor positioning
       error caused the command to move up one line and
       overwrite the output of previous commands. The issue has
       now been fixed. (Bug #27068352)

     * The mysqlsh command-line options --dbpassword[=password]
       and --dbuser=user_name are now deprecated. Use the
       options --password (-p) and --user (-u) instead. (Bug

     * AdminAPI was using the incorrect terms for Group
       Replication. Now clusters are described as single-primary
       and multi-primary, the multiMaster option has been
       deprecated, and the multiPrimary option has been added.
       (Bug #25926603)

     * The result printer in MySQL Shell was refactored to
       improve handling of binary data based on the output
       format, handling of multi-byte characters, and alignment
       of table formatting when multi-line characters are
       present. (Bug #24912154, Bug #24967872)

     * The result of calling dba.get_cluster().status() when
       quorum was lost could not be converted to a JSON object,
       because the string representation of the resultant object
       contained escape sequences. This issue was not limited to
       the Cluster.status() method, but affected all arrays and
       dictionaries returned by the Shell API in Python mode.
       The internal representation of arrays and dictionaries
       has been fixed. (Bug #91304, Bug #28200499)

On Behalf of MySQL Release Engineering team,
-Sreedhar S 

Options: ReplyQuote

Written By
MySQL Shell 8.0.13 for MySQL Server 8.0 and 5.7 has been released
October 22, 2018 08:45AM

Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.