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.
-
X DevAPI: The types of session available have been simplified.
XSession
andNodeSession
have been consolidated intoSession
. 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 classic MySQL protocol connections.
(WL #10823)
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 eitherDISABLED
orREQUIRED
based on the value used with the--ssl
option. (Bug #25403945)
-
With the addition of WL#10611 and WL#10960 , it was not possible to add or rejoin instances that belonged to a cluster (or a replication group) because
super_read_only=ON
was being set by Group Replication when stopping. To ensure that AdminAPI supports instances running MySQL 8.0.2 and later, the following functions have been modified: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 setsuper_read_only=OFF
. To force the function to setsuper_read_only=OFF
in a script, pass theclearReadOnly
option set totrue
. For exampledba.configureLocalInstance({clearReadOnly: true}).
For more information see Instance Configuration in Super Read-only Mode. (Bug #26422638, WL #11054)
When using the
clusterAdmin
option, the created account did not have all of the correct privileges. (Bug #26523629)When using the
multiMaster
option withdba.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'sgroup_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 thegroup_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 randomly generated passwords used by internal users were not compatible with instances running the Password Validation plugin. (Bug #25714751)
It is no longer possible to use the
adoptFromGr
option with themultiMaster
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 themultiMaster
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 inconfigureLocalInstance()
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)Issuing
Cluster.rescan()
resulted in non-deterministic behavior which could produce incorrect JSON output, showing an instance that was already part of the cluster as belonging to thenewlyDiscoveredInstances[]
list and to theunavailableInstances
[] 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 whenrequire_secure_transport
isON
, now it is not possible to create a cluster withmemberSslMode:DISABLED
or to add an instance withrequire_secure_transport=ON
to a cluster wherememberSslMode:DISABLED
. (Bug #25532298)The parsing of account names, for example when passing the
clusterAdmin
option todba.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 todba.rebootClusterFromCompleteOutage()
, if norejoinInstances[]
option was specified then members were being incorrectly handled during the rebuild. Now, instances that are eligible to be added to therejoinInstances[]
list but that are specified in theremoveInstances[]
list are skipped by the interactive wizard that tries to automatically build arejoinInstances[]
list if one was not provided. This fix also ensures that both interactive and noninteractive use of MySQL Shell correctly verify therejoinInstances[]
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)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)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, issuingremoveInstance()
on the last member of a cluster results in an error, and you must usedissolve()
on that instance to ensure the cluster is correctly dissolved. (Bug #25226130)The output of
cluster.status()
now includes thessl
parameter, which shows whether secure connections are required by the cluster or disabled. (Bug #25226117)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 optionforce
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 theremoveInstance()
was also updated accordingly. (Bug #24916064)The error messages generated by issuing
dba.deployLocalInstance()
against an unsuitable or incompatible instance have been improved. (Bug #24598272)-
The
dba.createCluster()
,dba.getCluster()
, anddba.rebootClusterFromCompleteOutage()
functions have been updated to validate the cluster name, using the following rules:Name must start with a letter or the
_
characterName can only contain alphanumeric characters and the
_
characterCannot 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
_
characterCannot be longer than 256 characters
Cannot be empty
(Bug #24565242)
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 thesleep()
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, WL #10568)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. (WL #10446)
-
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 nowssl-mode
sslCa
is nowssl-ca
sslCaPath
is nowssl-capath
sslCert
is nowssl-cert
sslKey
is nowssl-key
sslCrl
is nowssl-crl
sslCrlPath
is nowssl-crlpath
sslCiphers
is nowssl-ciphers
sslTlsVersion
is nowtls-version
authMethod
is nowauth-method
(WL #10912)
The interpretation of the
document_path
field in operations such asmodify()
has been changed. Now, when thedocument_path
is not set, operations apply to the whole document. All operations always preserve a document's_id
field. (WL #10682)
X DevAPI: Unsigned data could be incorrectly read from the database. (Bug #24912358)
In MySQL Shell, the
Schema.getCollectionAsTable()
function and theselect()
method could not be used in the same Python statement. (Bug #26552804)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)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
andmysqlx
API modules when MySQL Shell started. (Bug #25739185)The MySQL Shell command history displayed the contents of scripts that were run using the
\source
MySQL Shell command. (Bug #25676495)The
mysqlx.getNodeSession()
function in MySQL Shell now returns an error if an unrecognized connection option is provided. (Bug #25552033)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)
MySQL Shell could hang when Ctrl+C was used to exit the shell. (Bug #25180850, Bug #84022)
The parsing of Unix sockets provided as part of a URI has been improved. (Bug #24905066)
MySQL Shell now accepts Unicode characters as input. (Bug #23151666, Bug #81176)