MySQL Shell 提供了命令,使您能够修改代码编辑器的执行环境,例如配置活动编程语言或 MySQL 服务器连接。下表列出了无论当前选择的语言是什么都可用的命令。由于命令需要独立于执行模式可用,因此它们以转义序列开头,即\
字符。
命令 | 别名/快捷方式 | 描述 |
---|---|---|
|
|
打印有关 MySQL Shell 的帮助信息,或搜索在线帮助。 |
|
|
退出 MySQL Shell。 |
|
在 SQL 模式下,开始多行模式。代码在输入空行时被缓存并执行。 |
|
|
|
显示当前 MySQL Shell 状态。 |
|
将执行模式切换到 JavaScript。 |
|
|
将执行模式切换到 Python。 |
|
|
将执行模式切换到 SQL。 |
|
|
|
连接到 MySQL 实例。 |
|
重新连接到相同的 MySQL 实例。 |
|
|
断开全局会话。 |
|
|
|
指定要使用的模式。 |
|
|
使用活动语言执行脚本文件。 |
|
|
显示语句生成的任何警告。 |
|
|
不显示语句生成的任何警告。 |
|
查看和编辑命令行历史记录。 |
|
|
手动更新自动完成名称缓存。 |
|
|
查询和更改 MySQL Shell 配置选项。 |
|
|
使用提供的选项和参数运行指定的报告。 |
|
|
使用提供的选项和参数运行指定的报告,并定期刷新结果。 |
|
|
|
在默认系统编辑器中打开命令,然后将其显示在 MySQL Shell 中。 |
|
|
配置 MySQL Shell 用于显示文本的分页器。 |
|
禁用 MySQL Shell 配置为使用的任何分页器。 |
|
|
|
运行指定的操作系统命令并将结果显示在 MySQL Shell 中。 |
|
|
使您能够为 SQL 查询定义查询属性。MySQL Shell 的功能与 MySQL 客户端相同。 |
\help
命令可以带或不带参数使用。当不带参数使用时,会打印一般的帮助消息,其中包括有关可用 MySQL Shell 命令、全局对象和主要帮助类别的信息。
当带参数使用时,参数用于根据 MySQL Shell 当前运行的模式搜索可用帮助。参数可以是单词、命令、API 函数或 SQL 语句的一部分。以下类别存在
AdminAPI
- 详细说明了dba
全局对象和 AdminAPI,它使您能够使用 InnoDB 集群、InnoDB 集群集和 InnoDB 复制集。X DevAPI
- 详细说明了mysqlx
模块以及 X DevAPI 的功能,它使您能够使用 MySQL 作为文档存储。Shell 命令
- 提供有关可用内置 MySQL Shell 命令的详细信息。ShellAPI
- 包含有关shell
和util
全局对象的信息,以及mysql
模块,该模块使您能够在 MySQL 服务器上执行 SQL。SQL 语法
- 用于检索 SQL 语句语法帮助的入口点。
要搜索有关某个主题的帮助信息,例如 API 函数,请使用函数名称作为模式
。您可以使用通配符字符 ?
来匹配任何单个字符,并使用 *
来匹配搜索中的多个字符。通配符字符可以在模式中使用一次或多次。以下命名空间也可以在搜索帮助时使用
dba
用于 AdminAPImysqlx
用于 X DevAPImysql
用于经典 MySQL 协议的 ShellAPIshell
用于其他 ShellAPI 类:Shell
、Sys
、Options
commands
用于 MySQL Shell 命令cmdline
用于 mysqlsh 命令界面
例如,要搜索有关某个主题的帮助信息,请发出 \help
命令,并模式
使用
x devapi
搜索有关 X DevAPI 的帮助信息使用
\c
搜索有关 MySQL Shell\connect
命令的帮助信息使用
getCluster
或dba.getCluster
搜索有关 AdminAPIdba.getCluster()
操作的帮助信息使用
Table
或mysqlx.Table
搜索有关 X DevAPITable
类的帮助信息当 MySQL Shell 在 JavaScript 模式下运行时,使用
isView
、Table.isView
或mysqlx.Table.isView
搜索有关Table
对象的isView
函数的帮助信息当 MySQL Shell 在 Python 模式下运行时,使用
is_view
、Table.is_view
或mysqlx.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
命令并指定连接参数来建立新的连接。
\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 配置文件中持久设置。
您可以将 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_attribute
命令和 session.setQueryAttributes
方法,您可以为 SQL 查询定义查询属性。MySQL Shell 的功能与 MySQL 客户端的功能相同。
设置查询属性仅在经典 MySQL 协议上受支持。它不支持 X 协议会话。
有关更多信息,请参阅以下内容
设置查询属性示例
以下示例分别将属性 att1
和 att2
设置为值 val1
和 val2
-
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 | +-------------+-------------+