MySQL Forums
Forum List  »  Announcements

MySQL Shell 8.0.3-dmr has been released
Posted by: Kent Boortz
Date: September 29, 2017 07:11AM

Dear MySQL users,

This is the second development release version of MySQL Shell 8.0
(a component of the MySQL Server). The MySQL Shell is provided under
Oracle's dual-license.

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.3 dmr, see
the "Development Releases" tab at

We welcome and appreciate your feedback and bug reports, see


Changes in MySQL Shell 8.0.3 (2017-09-29, Development Milestone)

   MySQL Shell now synchronizes the first digit of its version
   number with the (highest) MySQL server version it supports.
   This change makes it easy and intuitive to decide which
   client version to use for which server version. MySQL Shell
   now uses the same version number as MySQL Server.

   MySQL Shell 8.0.3 is the first release to use the new
   numbering. It is the successor to MySQL Shell 8.0.0.

     * Functionality Added or Changed

     * Bugs Fixed

   Functionality Added or Changed

     * MySQL Shell now handles user interrupts, such as SIGINT,
       correctly. For example on Linux pressing Control-C when
       MySQL Shell is not executing anything exits the
       application. In SQL mode, interruption sends a KILL QUERY
       statement to the active MySQL Shell session from a new
       temporary session, resulting in the server interrupting
       the query and returning an error (or in an early return
       with no error in some cases, like the sleep() function).
       In JavaScript or Python scripting modes, how interruption
       behaves depends on the specific function being executed.
       If what is being executed is language code (such as a
       while loop and other normal script code), an exception is
       generated in the active language, which causes the code
       to stop executing. The exception may be caught by the
       script, but if not, the execution control returns to
       MySQL Shell. (Bug #24757361)

     * Since MySQL server version 8.0.2, whenever Group
       Replication stops the 'super_read_only' variable is set
       to 'OFF' to ensure no writes are made to the instance. To
       ensure that AdminAPI supports instances running MySQL
       8.0.2 and later, the following functions have been

          + dba.configureLocalInstance()

          + dba.createCluster()

          + dba.rebootClusterFromCompleteOutage()

          + dba.dropMetadataSchema()

       Now, if any of these functions is issued against an
       instance which has "super_read_only=ON", in interactive
       mode you are given the choice to set "super_read_only=OFF".
       To force the function to set "super_read_only=OFF" in a
       script, pass the 'clearReadOnly' option set to true. For
       example dba.configureLocalInstance({clearReadOnly: true}).

     * MySQL Shell now includes a history function that stores
       the code which you issue. The history can be saved,
       searched, and filtered. A new mechanism to customize the
       MySQL Shell prompt has been added. Information such as
       the current mode (SQL, JavaScript, or Python), session
       information (host, uri, port and so on), the current
       active schema and others can be included in the prompt
       through variables. The customization information is
       self-contained in JSON theme files, which can be shared
       between users. MySQL Shell now supports unicode if the
       terminal used to run MySQL Shell supports it. Similarly
       if the terminal supports color, MySQL Shell can be
       configured to use colors in the theme.

     * The connection options passed to MySQL Shell, such as
       sslMode and so on, have been changed to use dashes and no
       longer be case sensitive. The options are now:

          + sslMode is now ssl-mode

          + sslCa is now ssl-ca

          + sslCaPath is now ssl-capath

          + sslCert is now ssl-cert

          + sslKey is now ssl-key

          + sslCrl is now ssl-crl

          + sslCrlPath is now ssl-crlpath

          + sslCiphers is now ssl-ciphers

          + sslTlsVersion is now tls-version

          + authMethod is now auth-method

     * The types of session available have been simplified.
       XSession and NodeSession have been consolidated into
       Session. This has caused the following changes:

          + The following command options have been deprecated:
            --node, --sqln, --classic

          + The following command options have been introduced
            to replace the deprecated ones: -ma, --mysqlx (-mx),
            --mysql (-mc), --sqlx

          + The "\connect" MySQL Shell command no longer supports
            the arguments -c, and -n. Now the "\connect" command
            supports the argument --mysqlx(-mx) for creating X
            Protocol connections, and --mysql(-mc) for creating
            MySQL protocol connections.

   Bugs Fixed

     * In MySQL Shell, the Schema.getCollectionAsTable()
       function and the select() method could not be used in the
       same Python statement. (Bug #26552804)

     * When using the clusterAdmin option, the created account
       did not have all of the correct privileges.
       (Bug #26523629)

     * MySQL Shell returned some elements of DATE and DATETIME
       values incorrectly, including month values and fractional
       seconds. (Bug #26428636)

     * The month was incorrectly incremented on insertion of a
       timestamp in a table using MySQL Shell. (Bug #26423177)

     * For columns with the ZEROFILL attribute, NULL was also
       returned padded with zeroes. (Bug #26406214)

     * The output of the MySQL Shell "\status" command was
       enhanced with additional information. (Bug #26403909)

     * The MySQL Shell help for the "\connect" command indicated
       that a connection name could be used instead of a URI
       string, which was incorrect. (Bug #26392676)

     * When using the multiMaster option with
       dba.createCluster(), the warning displayed in interactive
       mode was not being logged. (Bug #26385634)

     * When making cluster topology or membership changes,
       AdminAPI was not taking into consideration the value of
       'group_replication_group_name', which could lead to
       incorrect, non-deterministic results in scenarios such as
       a split brain. Now, the following commands validate the
       InnoDB cluster Metadata and the corresponding instance's
       'group_replication_group_name' value:

          + dba.getCluster()

          + Cluster.rejoinInstance()

          + Cluster.forceQuorumUsingPartitionOf()

       If the values of 'group_replication_group_name' do not
       match, the commands abort with an error.
       dba.rebootClusterFromCompleteOutage() was also updated to
       ensure that the 'group_replication_group_name' variable has
       not been changed before rejoining the instance.
       (Bug #26159339)

     * AdminAPI now always uses the active user value for the
       current mysqlsh session, whether the value was explicitly
       specified by the user or is the result of an implicit
       default used by mysqlsh. (Bug #26132527)

     * The checks performed by the AdminAPI upon issuing
       dba.rebootClusterFromCompleteOutage() were more strict
       than those required by Group Replication. Now, the
       AdminAPI considers tables with a Primary Key Equivalent
       (such as a Non Null Unique Key) as compatible, matching
       the current requirement for Group Replication.
       (Bug #25974689)

     * The MySQL Shell command "\use" did not attempt to reconnect
       if the connection to the global session was lost.
       (Bug #25974014, Bug #86118)

     * The short form -? can now be used as an alias for the
       --help command-line option in MySQL Shell.
       (Bug #25813228)

     * The MySQL Shell command history displayed the commands
       that were used to automatically import the mysql and
       mysqlx API modules when MySQL Shell started.
       (Bug #25739185)

     * The randomly generated passwords used by internal users
       were not compatible with instances running the Password
       Validation plugin. (Bug #25714751)

     * The MySQL Shell command history displayed the contents of
       scripts that were run using the "\source" MySQL Shell
       command. (Bug #25676495)

     * It is no longer possible to use the adoptFromGr option
       with the multiMaster option. When adopting an existing
       group to an InnoDB cluster, the group is adopted based on
       whether it is running as multi-primary or single-primary.
       Therefore there is no use for the multiMaster option when
       adapting a group. (Bug #25664700)

     * Issuing configureLocalInstance() when using a URI that
       contained a user without the correct privileges resulted
       in an incorrect new user being created. Now, if the user
       in configureLocalInstance() URI does not have enough
       privileges to grant all the necessary privileges for the
       new user chosen during the interactive wizard
       configuration the user is not created. (Bug #25614855)

     * The mysqlx.getNodeSession() function in MySQL Shell now
       returns an error if an unrecognized connection option is
       provided. (Bug #25552033)

     * Issuing Cluster.rescan() resulted in non-determinstic
       behavior which could produce incorrect JSON output,
       showing an instance that was already part of the cluster
       as belonging to the newlyDiscoveredInstances[] list and
       to the unavailableInstances[] list. This also resulted in
       MySQL Shell prompting to add or remove the instance from
       the cluster. (Bug #25534693)

     * AdminAPI functions now accept the standard connection
       parameters as used by shell.connect. New validations have
       been added for when 'require_secure_transport' is ON, now
       it is not possible to to create a cluster with
       "memberSslMode:DISABLED" or to add an instance with
       "require_secure_transport=ON" to a cluster where
       "memberSslMode:DISABLED". (Bug #25532298)

     * The parsing of account names, for example when passing
       the clusterAdmin option to dba.configureLocalInstance()
       has been improved. (Bug #25528695)

     * The file permissions of option files created by AdminAPI
       did not match those of options files created by MySQL
       install. (Bug #25526248)

     * Issuing configureLocalInstance() twice could fail.
       (Bug #25519190)

     * When passing the rejoinInstances[] option to
       dba.rebootClusterFromCompleteOutage(), if no
       rejoinInstances[] option was specified then members were
       being incorrectly handled during the rebuild. Now,
       instances that are eligible to be added to the
       rejoinInstances[] list but that are specified in the
       removeInstances[] list are skipped by the interactive
       wizard that tries to automatically build a
       rejoinInstances[] list if one was not provided. This fix
       also ensures that both interactive and non-interactive
       use of MySQL Shell correctly verify the rejoinInstances[]
       list does not contain a unreachable instance.
       (Bug #25516390)

     * The error messages issued when the SSL mode used by the
       cluster and the one specified when issuing addInstance()
       command do not match have been improved. (Bug #25495056)

     * The --ssl option has been deprecated, use the --ssl-mode
       option. Now, if you use the --ssl option a deprecation
       warning is generated and the --ssl-mode option is set to
       either DISABLED or REQUIRED based on the value used with
       the --ssl option. (Bug #25403945)

     * When creating a sandbox instance using the
       dba.deploySandboxInstance() function in MySQL Shell,
       pressing Ctrl + C at the prompt for a MySQL root password
       for the instance did not cancel the deployment.
       (Bug #25316811)

     * MySQL Shell did not exit gracefully when the user did not
       have a valid and accessible home directory.
       (Bug #25298480)

     * MySQL Shell created a logger but did not deallocate it on
       exiting the shell. (Bug #25238576)

     * Issuing removeInstance() on the last member of a cluster,
       and particularly the seed member, was resulting in a
       cluster that could not be dissolved. Now, issuing
       removeInstance() on the last member of a cluster results
       in an error, and you must use dissolve() on that instance
       to ensure the cluster is correctly dissolved.
       (Bug #25226130)

     * The output of cluster.status() now includes the ssl
       parameter, which shows whether secure connections are
       required by the cluster or disabled. (Bug #25226117)

     * MySQL Shell could hang when Ctrl + C was used to exit the
       shell. (Bug #25180850, Bug #84022)

     * Attempting to create a multi-primary cluster in
       interactive mode failed unless you passed in the {force:
       true} option. Now when you confirm that you understand
       the impact of using multi-primary mode the command
       correctly creates a multi-primary cluster.
       (Bug #25034951)

     * The removeInstance() was not working on stopped instances
       and it was not possible to remove an unavailable instance
       from the cluster. The fix adds a new option force to the
       removeInstance() command to enable you to remove
       instances from the metadata that are permanently not
       available, avoiding obsolete data from being kept in the
       metadata of the cluster. In addition the error message
       provided when not using the force option has been
       improved and the online help for the removeInstance() was
       also updated accordingly. (Bug #24916064)

     * Unsigned data could be incorrectly read from the
       database. (Bug #24912358)

     * The parsing of Unix sockets provided as part of a URI has
       been improved. (Bug #24905066)

     * The error messages generated by issuing
       dba.deployLocalInstance() against an unsuitable or
       incompatible instance have been improved. (Bug #24598272)

     * The dba.createCluster(), dba.getCluster(), and
       dba.rebootClusterFromCompleteOutage() functions have been
       updated to validate the cluster name, using the following

          + Name must start with a letter or the '_' character

          + Name can only contain alphanumeric characters and
            the '_' character

          + Cannot be longer than 40 characters

          + Cannot be empty

       The Cluster.addInstance() function has been updated to
       validate the label used on an instance in the cluster,
       using the following rules:

          + Label can only contain alphanumerics or the '_'

          + Cannot be longer than 256 characters

          + Cannot be empty

       (Bug #24565242)

     * MySQL Shell now accepts Unicode characters as input.
       (Bug #23151666, Bug #81176)

On Behalf of the MySQL/ORACLE RE Team
Kent Boortz

Options: ReplyQuote

Written By
MySQL Shell 8.0.3-dmr has been released
September 29, 2017 07:11AM

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.