MySQL Shell 9.0  /  使用 MySQL Shell 命令  /  MySQL Shell 命令

3.1 MySQL Shell 命令

MySQL Shell 提供了命令,使您能够修改代码编辑器的执行环境,例如配置活动编程语言或 MySQL 服务器连接。下表列出了无论当前选择的语言是什么都可以使用的命令。由于命令需要独立于执行模式可用,因此它们以转义序列开头,即 \ 字符。

命令 别名/快捷方式 描述

\help

\h\?

打印关于 MySQL Shell 的帮助信息,或搜索在线帮助。

\quit

\q\exit

退出 MySQL Shell。

\

在 SQL 模式下,开始多行模式。当输入空行时,代码会被缓存并执行。

\status

\s

显示当前 MySQL Shell 状态。

\js

将执行模式切换到 JavaScript。

\py

将执行模式切换到 Python。

\sql

将执行模式切换到 SQL。

\connect

\c

连接到 MySQL 实例。

\reconnect

重新连接到同一个 MySQL 实例。

\disconnect

断开全局会话连接。

\use

\u

指定要使用的模式。

\source

\.source(不带反斜杠)

使用活动语言执行脚本文件。

\warnings

\W

显示语句生成的任何警告。

\nowarnings

\w

不显示语句生成的任何警告。

\history

查看和编辑命令行历史记录。

\rehash

手动更新自动补全名称缓存。

\option

查询和更改 MySQL Shell 配置选项。

\show

使用提供的选项和参数运行指定报告。

\watch

使用提供的选项和参数运行指定报告,并定期刷新结果。

\edit

\e

在默认系统编辑器中打开一个命令,然后在 MySQL Shell 中呈现它。

\pager

\P

配置 MySQL Shell 用于显示文本的分页器。

\nopager

禁用 MySQL Shell 配置为使用的任何分页器。

\system

\!

运行指定的系统命令并在 MySQL Shell 中显示结果。

\query_attributes

使您可以为 SQL 查询定义查询属性。MySQL Shell 的功能与 MySQL 客户端的功能相同。

帮助命令

\help 命令可以带或不带参数使用。不带参数使用时,将打印一个通用帮助消息,其中包括关于可用的 MySQL Shell 命令、全局对象和主要帮助类别的信息。

带参数使用时,该参数用于根据 MySQL Shell 当前运行的模式搜索可用的帮助信息。该参数可以是单词、命令、API 函数或 SQL 语句的一部分。存在以下类别

  • AdminAPI - 详细介绍 dba 全局对象和 AdminAPI,它使您能够使用 InnoDB 集群、InnoDB ClusterSet 和 InnoDB ReplicaSet。

  • X DevAPI - 详细介绍 mysqlx 模块以及 X DevAPI 的功能,它使您能够将 MySQL 作为文档存储使用。

  • Shell 命令 - 提供关于可用的内置 MySQL Shell 命令的详细信息。

  • ShellAPI - 包含关于 shellutil 全局对象以及 mysql 模块的信息,该模块使您能够在 MySQL 服务器上执行 SQL。

  • SQL 语法 - 用于检索 SQL 语句语法帮助的入口点。

要搜索有关主题的帮助信息(例如 API 函数),请使用该函数名称作为模式。您可以在搜索中使用通配符 ? 来匹配任何单个字符,使用 * 来匹配多个字符。通配符可以在模式中使用一次或多次。以下命名空间也可以在搜索帮助信息时使用

  • dba 用于 AdminAPI

  • mysqlx 用于 X DevAPI

  • mysql 用于经典 MySQL 协议的 ShellAPI

  • shell 用于其他 ShellAPI 类:ShellSysOptions

  • commands 用于 MySQL Shell 命令

  • cmdline 用于 mysqlsh 命令行界面

例如,要搜索有关主题的帮助信息,请执行 \help 模式 命令,并

  • 使用 x devapi 搜索有关 X DevAPI 的帮助信息

  • 使用 \c 搜索有关 MySQL Shell \connect 命令的帮助信息

  • 使用 getClusterdba.getCluster 搜索有关 AdminAPI dba.getCluster() 操作的帮助信息

  • 使用 Tablemysqlx.Table 搜索有关 X DevAPI Table 类的帮助信息

  • 当 MySQL Shell 运行在 JavaScript 模式下时,使用 isViewTable.isViewmysqlx.Table.isView 搜索有关 Table 对象的 isView 函数的帮助信息

  • 当 MySQL Shell 运行在 Python 模式下时,使用 is_viewTable.is_viewmysqlx.Table.is_view 搜索有关 Table 对象的 isView 函数的帮助信息

  • 当 MySQL Shell 运行在 SQL 模式下时,如果存在与 MySQL 服务器的全局会话,则会显示 SQL 帮助信息。要获得概述,请使用 sql syntax 作为搜索模式。

根据提供的搜索模式,可能会找到一个或多个结果。如果只有一个帮助主题的标题中包含搜索模式,则会显示该帮助主题。如果多个主题标题与模式匹配,但其中一个完全匹配,则会显示该帮助主题,然后是标题中包含模式匹配的其他主题的列表。如果没有找到完全匹配的主题,则会显示包含模式匹配的主题标题的列表。如果返回一个主题列表,您可以从列表中选择一个主题查看,方法是再次输入该命令,并使用扩展的搜索模式,该模式与相关主题的标题匹配。

连接、重新连接和断开连接命令

\connect 命令用于连接到 MySQL 服务器。请参阅 第 4.3 节,“MySQL Shell 连接”

例如

\connect root@localhost:3306

如果需要密码,系统会提示您输入密码。

使用 --mysqlx (--mx) 选项使用 X 协议创建会话以连接到 MySQL 服务器实例。例如

\connect --mysqlx root@localhost:33060

使用 --mysql (--mc) 选项创建 ClassicSession,使您能够使用经典 MySQL 协议直接在服务器上发出 SQL。例如

\connect --mysql root@localhost:3306

使用 --ssh 选项创建或重用 SSH 隧道,该隧道提供到 MySQL 服务器实例的加密连接。不支持通过使用 SSH 隧道从 MySQL Shell 建立的连接使用 AdminAPI 命令。以 [user@]hostname[:port] 格式提供连接到 SSH 服务器的 URI,后跟 MySQL 实例 URI,例如

\connect --ssh [email protected]:2222 root@localhost:3306

当您使用 --ssh 选项时,必须在 MySQL 实例 URI 中指定连接到 MySQL 服务器实例的端口。

使用 \connect 命令设置的 SSH 隧道必须使用默认的 SSH 配置文件和身份文件。有关设置这些文件的说明以及有关从 MySQL Shell 建立 SSH 隧道连接的更多信息,请参阅 第 4.3.6 节,“使用 SSH 隧道”。您可以使用 shell.connect() 方法或在命令行上设置 SSH 隧道以获取其他设置选项。一旦建立,SSH 隧道可以在来自同一个用户的同一个实例的连接之间共享,无论最初使用的是哪种设置方法,只要它们连接到同一个主机。

\reconnect 命令不带任何参数或选项。如果与服务器的连接断开,您可以使用 \reconnect 命令,该命令使 MySQL Shell 使用现有连接参数尝试对会话进行多次重新连接。如果这些尝试失败,您可以使用 \connect 命令并指定连接参数来进行新的连接。

\disconnect 命令也不带任何参数或选项。该命令断开 MySQL Shell 的全局会话(由 session 全局对象表示的会话)与当前连接的 MySQL 服务器实例的连接,以便您可以关闭连接,但仍然可以继续使用 MySQL Shell。

如果与服务器的连接断开,您可以使用 \reconnect 命令,该命令使 MySQL Shell 使用现有连接参数尝试对会话进行多次重新连接。如果这些尝试失败,您可以使用 \connect 命令并指定连接参数来进行新的连接。

状态命令

\status 命令显示有关当前全局连接的信息。这包括有关连接的服务器、使用的字符集、正常运行时间等等的信息。

源命令

\source 命令或其别名 \. 可用于 MySQL Shell 的交互模式,在给定路径下执行来自脚本文件的代码。例如

\source /tmp/mydata.sql

您可以执行 SQL、JavaScript 或 Python 代码。文件中的代码使用活动语言执行,因此要处理 SQL 代码,MySQL Shell 必须处于 SQL 模式。

警告

由于代码是使用活动语言执行的,因此在与当前选择的执行模式语言不同的语言中执行脚本可能会导致意外结果。

为了与mysql客户端兼容,仅在 SQL 模式下,您可以使用source命令(不带反斜杠并带有可选的 SQL 分隔符)从脚本文件执行代码。 source或别名\.(不使用 SQL 分隔符)既可以在 MySQL Shell 的 SQL 交互模式下直接执行脚本,也可以在批处理模式下处理的 SQL 代码文件中使用,以在文件中执行另一个脚本。因此,使用 SQL 模式下的 MySQL Shell,您现在可以使用以下三个命令中的任何一个来执行/tmp/mydata.sql文件中的脚本,无论是交互模式还是批处理模式

source /tmp/mydata.sql;
source /tmp/mydata.sql
\. /tmp/mydata.sql  

命令\source /tmp/mydata.sql也是有效的,但仅在交互模式下有效。

在交互模式下,\source\.source命令本身将被添加到 MySQL Shell 历史记录中,但执行的脚本文件的内容不会被添加到历史记录中。

使用命令

使用\use命令,您可以选择哪个模式是活动的,例如

\use schema_name

\use 命令要求一个全局开发会话处于活动状态。 \use 命令将当前模式设置为指定的 schema_name,并将db变量更新为表示所选模式的对象。

历史记录命令

\history命令列出您之前在 MySQL Shell 中发出的命令。发出\history将按发出顺序显示历史记录条目及其历史记录条目号,该号码可与\history delete entry_number命令一起使用。

\history命令提供以下选项

  • 使用\history save手动保存历史记录。

  • 使用\history delete entrynumber删除具有给定编号的单个历史记录条目。

  • 使用\history delete firstnumber-lastnumber删除给定条目号范围内的历史记录条目。如果lastnumber超过找到的最后一个历史记录条目号,则将删除直到最后一条条目(包括最后一条条目)的历史记录条目。

  • 使用\history delete number-删除从number到最后一条条目(包括最后一条条目)的历史记录条目。

  • 使用\history delete -number删除从最后一条条目开始并向后工作的指定数量的历史记录条目。例如,\history delete -10删除最后 10 个历史记录条目。

  • 使用\history clear删除整个历史记录。

默认情况下,历史记录不会在会话之间保存,因此当您退出 MySQL Shell 时,您在当前会话期间发出的历史记录将丢失。如果您想在会话之间保留历史记录,请启用 MySQL Shell 的history.autoSave选项。有关更多信息,请参阅第 5.5 节“代码历史记录”

重新哈希命令

当您禁用自动完成名称缓存功能时,请使用\rehash命令手动更新缓存。例如,在您通过发出\use schema命令加载新模式后,请发出\rehash以更新自动完成名称缓存。在此之后,自动完成将了解数据库中使用的名称,并且您可以自动完成文本,例如表名等。请参阅第 5.3 节“代码自动完成”

选项命令

\option命令允许您查询和更改所有模式下的 MySQL Shell 配置选项。您可以使用\option命令列出已设置的配置选项,并显示其值上次更改的方式。您也可以使用它来设置和取消设置选项,无论是针对会话,还是持久地保存在 MySQL Shell 配置文件中。有关说明和配置选项列表,请参阅第 13.4 节“配置 MySQL Shell 选项”

分页命令

您可以配置 MySQL Shell 使用外部分页器来读取屏幕上的长输出,例如联机帮助或 SQL 查询的结果。请参阅第 4.6 节“使用分页器”

显示和监视命令

\show命令运行名为的报告,该报告可以是内置的 MySQL Shell 报告,也可以是已在 MySQL Shell 中注册的用户定义报告。您可以为命令指定标准选项,以及报告支持的任何选项或其他参数。 \watch命令以与\show命令相同的方式运行报告,但随后以固定的时间间隔刷新结果,直到您使用 Ctrl + C 取消命令为止。有关说明,请参阅第 10.1.5 节“运行 MySQL Shell 报告”

编辑命令

\edit (\e) 命令在默认的系统编辑器中打开一个命令以进行编辑,然后在 MySQL Shell 中呈现已编辑的命令以供执行。该命令也可以使用键组合 Ctrl-X Ctrl-E 来调用。有关详细信息,请参阅第 5.4 节“编辑代码”

系统命令

\system (\!) 命令运行您作为命令参数指定的系统命令,然后在 MySQL Shell 中显示命令的输出。如果 MySQL Shell 无法执行命令,则会返回错误。命令的输出将按操作系统给出的方式返回,不会被 MySQL Shell 的 JSON 包装函数或您指定的任何外部分页器工具处理以显示输出。

query_attributes 命令

query_attribute 命令和 session.setQueryAttributes 方法允许您为您的 SQL 查询定义查询属性。MySQL Shell 的功能与 MySQL 客户端的功能相同。

注意

仅在经典的 MySQL 协议上支持设置查询属性。对于 X 协议会话,它不受支持。

有关更多信息,请参阅以下内容

设置查询属性示例

以下示例分别将属性 att1att2 设置为值 val1val2

  • SQL

    SQL> \query_attributes att1 val1 att2 val2
  • JavaScript

    JS> session.setQueryAttributes({att1:"val1",att2:"val2"})
  • Python

    PY> session.set_query_attributes({att1:"val1",att2:"val2"})

检索查询属性示例

可以使用mysql_query_attribute_string()函数检索属性。

例如

  • SQL

    SQL> select mysql_query_attribute_string("att1") as "Attribute 1", mysql_query_attribute_string("att2")as "Attribute 2"
         +-------------+-------------+
         | Attribute 1 | Attribute 2 |
         +-------------+-------------+
         | v1          | v2          |
         +-------------+-------------+
  • JavaScript

    JS> session.runSql("select mysql_query_attribute_string("att1") as "Attribute 1", mysql_query_attribute_string("att2")as "Attribute 2"')")
        +-------------+-------------+
        | Attribute 1 | Attribute 2 |
        +-------------+-------------+
        | v1          | v2          |
        +-------------+-------------+