The following features are available in MySQL Shell.
MySQL Shell processes code in the following languages:
of these languages, based on the language that is currently
active. There are also specific MySQL Shell commands, prefixed
\, which enable you to configure
MySQL Shell regardless of the currently selected language. For
more information see Section 3.1, “MySQL Shell Commands”.
From version 8.0.18, MySQL Shell uses Python 3. For platforms that include a system supported installation of Python 3, MySQL Shell uses the most recent version available, with a minimum supported version of Python 3.4.3. For platforms where Python 3 is not included, MySQL Shell bundles Python 3.7.4. MySQL Shell maintains code compatibility with Python 2.6 and Python 2.7, so if you require one of these older versions, you can build MySQL Shell from source using the appropriate Python version.
MySQL Shell provides an interactive code execution mode, where you type code at the MySQL Shell prompt and each entered statement is processed, with the result of the processing printed onscreen. Unicode text input is supported if the terminal in use supports it. Color terminals are supported.
Multiple-line code can be written using a command, enabling MySQL Shell to cache multiple lines and then execute them as a single statement. For more information see Multiple-line Support.
In addition to the interactive execution of code, MySQL Shell can also take code from different sources and process it. This method of processing code in a noninteractive way is called Batch Execution.
As batch execution mode is intended for script processing of a
single language, it is limited to having minimal non-formatted
output and disabling the execution of commands. To avoid these
limitations, use the
command-line option, which tells MySQL Shell to execute the
input as if it were an interactive session. In this mode the input
is processed line by line just as if each
line were typed in an interactive session. For more information
see Section 5.6, “Batch Code Execution”.
The X DevAPI enables you to work with both relational and document data when MySQL Shell is connected to a MySQL server using the X Protocol. For more information, see Using MySQL as a Document Store. For documentation on the concepts and usage of X DevAPI, see X DevAPI User Guide.
The AdminAPI enables you to work with InnoDB cluster, which provides an integrated solution for high availability and scalability using InnoDB based MySQL databases, without requiring advanced MySQL expertise. See InnoDB Cluster.
MySQL Shell is designed to provide an integrated command-line client for all MySQL products which support X Protocol. The development features of MySQL Shell are designed for sessions using the X Protocol. MySQL Shell can also connect to MySQL Servers that do not support the X Protocol using the legacy MySQL Protocol. A minimal set of features from the X DevAPI are available for sessions created using the legacy MySQL protocol.
MySQL Shell includes the following utilities for working with MySQL:
An upgrade checker utility to verify whether MySQL server instances are ready for upgrade. Use
util.checkForServerUpgrade()to access the upgrade checker.
A JSON import utility to import JSON documents to a MySQL Server collection or table. Use
util.importJSON()to access the import utility.
A parallel table import utility that splits up a single data file and uses multiple threads to load the chunks into a MySQL table.
See Chapter 7, MySQL Shell Utilities for more information.
MySQL Shell exposes much of its functionality using an API command
syntax that enables you to easily integrate
mysqlsh with other tools. For example you can
create bash scripts which administer an
InnoDB cluster with this functionality. Use the
pass operations directly to MySQL Shell global objects,
bypassing the REPL interface. See
Section 5.8, “API Command Line Interface”.
MySQL Shell can return results in table, tabbed, or vertical format, or as JSON output. To help integrate MySQL Shell with external tools, you can activate JSON wrapping for all output when you start MySQL Shell from the command line. For more information see Section 5.7, “Output Formats”.
MySQL Shell can log information about the execution process at your chosen level of detail. Logging information can be sent to any combination of an application log file, an additional viewable destination, and the console. For more information see Chapter 8, MySQL Shell Logging and Debug.
Interaction with a MySQL server is done through a Session object.
getSession function of the
mysqlx module. If a session is created in
Python mode. These sessions cannot be used in SQL mode.
For SQL Mode, the concept of Global Session is supported by
MySQL Shell. A Global Session is created when the connection
information is passed to MySQL Shell using command options, or
by using the
The Global Session is used to execute statements in SQL mode and
When a Global Session is created, a variable called
session is set in the scripting languages, so
you can execute code in the different languages by switching the
For more information, see Section 4.4, “MySQL Shell Sessions”.