Important Change: An RPM package for installing ARM 64-bit (aarch64) binaries of MySQL Shell on Oracle Linux 7 is now available in the MySQL Yum Repository and for direct download.
Known Limitation for this ARM release: You must enable the Oracle Linux 7 Software Collections Repository (ol7_software_collections) to install this package, and must also adjust the libstdc++7 path. See Yum's Platform Specific Notes for additional details.
MySQL Shell now enables you to store user credentials in an operating system specific secret store. You can then enter a MySQL user's password during connection and store it for future connections. Currently the following secret stores are supported:
(Bug #23304789, Bug #81484)
The way you access the online Shell help has been standardized. Use the
\helpcommand to search the help. The scope of the command has been increased to support retrieving help for the following categories:
Class and function help for the Admin API, X DevAPI and Shell API. Previously, to retrieve help for API objects, you had to create an instance of the object and use the
SQL syntax help, provided that a global session object exists.
Wildcards can now be used to search for help. A number of additional bugs relating to incomplete help information have also been fixed. (Bug #23255291, Bug #81277, Bug #24963435, Bug #25732663, Bug #85481, Bug #25739522, Bug #85511, Bug #25739664, Bug #85514, Bug #26393155, Bug #86950, Bug #24943074, Bug #26429399, Bug #87037, Bug #27870491, Bug #90455, Bug #27870503, Bug #90456, Bug #27875150, Bug #90474, Bug #24948933, Bug #83527)
util.checkForServerUpgrade()operation has an additional
outputFormatparameter that you can specify when running the utility. The utility can now generate output in two formats:
TEXT format, which is the default. This option provides output suitable for humans, as previously returned by the utility.
JSON format. This option provides output suitable for machines, which can be parsed and processed for various further use cases.
command has been improved, with the following changes:
A new interactive option has been added to enable or disable interactive mode for the command. The output displayed in interactive mode has been improved, displaying more useful information.In interactive mode, you are prompted to continue with the removal of the instance (or not) in case it is not reachable.
The operation now ensures that the instance is removed from the metadata of all the cluster members and itself. This only applies to
A new global option
dba.gtidWaitTimeoutis available to define the timeout to wait for transactions (GTIDs) to be applied when required by AdminAPI commands. If the timeout value defined by
dba.gtidWaitTimeoutis reached when waiting for the cluster transactions to be applied for
force: false(or not defined) then an error is issued and the operation aborted. When
force: truethen the operation continues and does not generate an error.
References: See also: Bug #27817894.
When using the
ipWhitelistto define which servers could access the cluster, the internal user accounts were not matching the whitelist. Now AdminAPI applies the same filtering logic from
ipWhitelistfor the internal administrative accounts.
References: See also: Bug #26140094, Bug #28165891.
In order to be compliant with the X DevAPI specification, the following changes have been made:
Collection.modify(condition).merge()have been deprecated.
Collection.find().limit(x).skip(y)has been renamed to
Collection.find().limit(x).skip(y)has been deprecated.
Collection.find().limit(x).offset(y)has been implemented.
BaseResult.getAffectedItemsCount()has been implemented.
BaseResult.getWarningCount()has been deprecated.
BaseResult.getWarningsCount()has been implemented.
Result.getAffectedItemCount()has been deprecated.
SqlResult.getAffectedRowCount()has been deprecated.
SqlResult.nextDataSet()has been renamed to
SqlResult.nextDataSet()has been deprecated.
SqlResult.nextResult()has been implemented.
The sample prompt theme files for MySQL Shell were deployed to an incorrect location on the Windows platform, in the root install folder. The files are now correctly deployed in the
\share\mysqlsh\promptsub-folder. (Bug #28188761)
The upgrade checker utility provided by MySQL Shell (the
util.checkForServerUpgrade()operation) has been enhanced with a summary count of the errors, warnings, and information level issues found by the tool, and with links to documentation with further information where this is available. (Bug #28171814)
cluster.forceQuorumUsingPartitionOf()operation sets the
group_replication_force_membersvariable on the target instance to force a new group membership and restore the quorum, but it did not reset the value of the variable at the end of the process. Consequently, if Group Replication later needed to be restarted on the target instance it failed because the
group_replication_force_membersvariable was still set. Now, the
group_replication_force_membersvariable is reset to an empty string at the end of the
cluster.forceQuorumUsingPartitionOf()operation. (Bug #28064621)
When upgrading from version 1.0.11 to version 8.0.11 of MySQL Shell on Linux, the upgrade failed if the original package was the community edition and the new package was the commercial edition, or vice versa. Upgrading from one edition to the other edition is now enabled. (Bug #28037407)
util.checkForServerUpgrade()operation can now use either an X Protocol connection or a classic MySQL protocol connection. (Bug #28027707)
checkForServerUpgrade()operation to verify upgrade prerequisites included an unnecessary check relating to
ZEROFILLand display length attributes in columns. The check has now been removed. (Bug #27927641, Bug #90634)
Some messages displayed by MySQL Shell were showing a MySQL server version that does not exist. (Bug #27924694)
For sessions using the classic MySQL protocol, if the
session_track_gtidssystem variable is set on the server to capture and return GTIDs to the client, MySQL Shell now displays the GTIDs for successfully committed transactions. The returned GTID values are also now recorded in tracing information. (Bug #27871148)
defaultModeMySQL Shell configuration option had been set with the
--persistoption, batch code execution from a file was always attempted using the specified default language, even if the file extension indicated a different supported language. Now when a file is loaded for batch processing using the
-foption, files with the extensions
.sqlare processed in the appropriate language mode, regardless of the set default language. (Bug #27861407)
The methods provided in the
When executing a SQL script using MySQL Shell, delimiters ( such as the default semi-colon character) present in multi-line comments caused execution to fail. Delimiters are now ignored inside multi-line comments. (Bug #27841719)
MySQL Shell returned an error when querying timestamp values that were zero, because a zero value for the month or day in a date was not accepted. Zero timestamp values can now be used without producing an error. (Bug #27833822, Bug #90355)
shell.getSession()function returns a reference to the
sessionglobal object representing the already established connection between MySQL Shell and a MySQL server, known as a global session. MySQL Shell now gracefully handles the situation where the function is called when no global session has yet been established. (Bug #27809310)
It was possible to use AdminAPI operations on server instances running an incompatible version of MySQL. (Bug #27765769)
The setting of the
bind_addressvariable is no longer a requirement. (Bug #27765484)
When creating a cluster or adding an instance, if the
localAddressoption is not specified, the port used for
group_replication_local_addressis automatically assigned with the value:
port* 10 + 1. However, if the resulting port determined by the previous rule was already in use then a random port was generated and used. Now MySQL Shell checks that the
group_replication_local_addressport is available, and fails if it is not. (Bug #27758041)
The MySQL Shell application icon on Microsoft Windows was not being displayed for the MySQL Shell 8.0 GA release, due to an incorrect association introduced for the icon during code refactoring. The icon is now displayed correctly. (Bug #27746532)
dbPasswordoption is no longer valid in the options dictionary of all AdminAPI commands. (Bug #27745106)
\s) command in MySQL Shell now displays full information about the version and build of the connected MySQL server. (Bug #27740420)
The check for reserved keywords carried out by the
util.checkForServerUpgrade()operation was updated to match the list of reserved keywords for the MySQL 8.0 GA release. (Bug #27724201)
When handling escape sequences, MySQL Shell now identifies and skips over SQL comments and string literals within quotation marks. (Bug #27665229)
Python's mapping type has been added to MySQL Shell, so that dictionary syntax can be used to interact with data in Python mode. (Bug #27614110)
When a file was redirected to standard input for execution in MySQL Shell, on Unix, the first part of the file was taken as being the password. The password prompt now looks for user input first before resorting to standard input. (Bug #27572380)
It was possible to use the
dba.forceQuorumUsingPartition()operation on a cluster which had not lost quorum. (Bug #27508698)
The help message for
dba.rebootClusterFromCompleteOutage()operation was incorrectly suggesting to use
dba.forceQuorumUsingPartition(). (Bug #27508627)
If Ctrl+C was entered or an unexpected error occurred at a password prompt in MySQL Shell, the terminal state was not restored correctly afterwards. (Bug #27379834)
dba.rebootClusterFromCompleteOutage()operation was creating a new user on the target instances, which could lead to the existence of an increasing number of users. The fix ensures that these users are not created by the
dba.rebootClusterFromCompleteOutage()operation. (Bug #27344040)
Now when you issue
dba.getCluster()and retrieve a cluster without quorum a warning is issued in addition to the log message. (Bug #27148943)
memberSslModeoption could be used with
operations but if you specified a different value than the one used at cluster creation an error was thrown. Now set the SSL mode at the cluster level only, in other words when issuing
memberSslModeoption has been removed from
When you issued
dba.configureLocalInsance()on an instance, it configured the
disabled_storage_enginesvariable with the
ARCHIVEstorage engines to ensure that the storage engine was set to
InnoDB, as required by Group Replication. The change to this option was not being reported correctly by AdminAPI, and hence the required restart after changing the
disabled_storage_enginesvariable was not clear. This change was deemed a recommendation, rather than a requirement, hence
dba.configureLocalInsance()no longer configures
disabled_storage_engines. (Bug #26754410)
Creating a cluster using an account which was missing the global grant option failed with an ambiguous error message, even though
dba.checkInstanceConfiguration()did not return any errors. Now when you create a cluster, the account being used to administer the cluster is checked to ensure that it has the global grant option. (Bug #25966235)
MySQL Shell is able to automatically reconnect global session when running in the interactive mode, but AdminAPI methods lacked this feature. This resulted in you having to reconnect manually. Now, the AdminAPI methods which utilize the global session object have been improved in order to detect an interrupted session and trigger the reconnection mechanism. The Cluster object uses its own internal session instance, which does not support automatic reconnection. If connection to the cluster is lost, you need to manually recreate the Cluster object. (Bug #24702489)
In the event of a whole cluster stopping unexpectedly, upon reboot the
memberSslModewas not preserved. In a cluster where SSL had been disabled, upon issuing
dba.rebootClusterFromCompleteOutage()this could prevent instances from rejoining the cluster. (Bug #90793, Bug #27986413)