第 3 章使用 MySQL Shell 命令
目录
本节介绍从交互式代码编辑器配置 MySQL Shell 的命令。这些命令使您能够控制 MySQL Shell,而不管当前使用的是何种语言。例如,您可以获得联机帮助、连接到服务器、更改当前使用的语言、运行报告、使用实用程序等。这些命令有时类似于 MySQL Shell 设置,可以使用mysqlsh命令选项进行配置,请参阅附录 A,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 中显示结果。 |
帮助命令
该\help命令可以带参数也可以不带参数。当在没有参数的情况下使用时,将打印一条一般帮助消息,包括有关可用 MySQL Shell 命令、全局对象和主要帮助类别的信息。
当与参数一起使用时,该参数用于根据MySQL Shell当前运行的模式搜索可用的帮助。该参数可以是单词、命令、API函数或SQL语句的一部分。存在以下类别:
AdminAPI- 详细介绍dba全局对象和 AdminAPI,使您能够使用 InnoDB Cluster、InnoDB ClusterSet 和 InnoDB ReplicaSet。X DevAPI- 详细介绍mysqlx模块以及 X DevAPI 的功能,使您能够将 MySQL 作为文档存储使用Shell Commands- 提供有关可用的内置 MySQL Shell 命令的详细信息。ShellAPI- 包含有关全局对象的信息shell,util以及mysql支持在 MySQL 服务器上执行 SQL 的模块。SQL Syntax- 检索 SQL 语句语法帮助的入口点。
要搜索某个主题(例如 API 函数)的帮助,请将函数名称用作*pattern*. 您可以使用通配符匹配搜索中的?任何单个字符和多个字符。*通配符可以在模式中使用一次或多次。搜索帮助时也可以使用以下命名空间:
dba对于 AdminAPImysqlx对于 X DevAPImysql用于经典 MySQL 协议的 ShellAPIshell对于其他 ShellAPI 类:Shell,Sys,Optionscommands对于 MySQL Shell 命令cmdline对于 mysqlsh命令界面
例如,搜索某个主题、问题的帮助以及: \help *pattern*
- 用于*
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*来搜索对象isView功能的 帮助Table - MySQL Shell运行在Python模式下,使用
is_view, *Table.is_view*或 *mysqlx.Table.is_view*搜索对象isView功能的 帮助Table - 当 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
从 MySQL Shell 的 8.0.13 版开始不推荐 使用带有短形式选项(即 -mxand )的单个破折号。-mc
使用该--ssh选项(可从 MySQL Shell 8.0.28 获得)创建或重用 SSH 隧道,该隧道提供与 MySQL 服务器实例的加密连接。使用 SSH 隧道从 MySQL Shell 建立的连接不支持使用 AdminAPI 命令。以格式提供用于连接到 SSH 服务器的 URI [user@]hostname[:port],后跟 MySQL 实例 URI,例如:
\connect --ssh root@198.51.100.4:2222 root@localhost:3306
使用该--ssh选项时,必须在 MySQL 实例 URI 中指定用于连接 MySQL 服务器实例的端口。
使用该命令建立的 SSH 隧道\connect 必须使用默认的 SSH 配置文件和标识文件。有关从 MySQL Shell 设置 SSH 隧道连接的说明和更多信息,请参阅 第 4.3.6 节,“使用 SSH 隧道”。shell.connect()您可以使用该方法或在命令行上设置 SSH 隧道 以获取其他设置选项。一旦建立,SSH 隧道就可以在从同一实例连接的同一用户到同一主机的连接之间共享,无论最初使用的设置方法是什么。
该\reconnect命令的指定没有任何参数或选项。如果与服务器的连接丢失,您可以使用该\reconnect命令,它使 MySQL Shell 使用现有的连接参数为会话尝试多次重新连接尝试。如果这些尝试不成功,您可以使用该\connect命令并指定连接参数来建立新的连接。
该\disconnect命令可从 MySQL Shell 8.0.22 获得,指定时也没有任何参数或选项。该命令将 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 Shell 8.0.19 开始,为了与 mysqlsource客户端兼容,仅在 SQL 模式下,您可以使用不带反斜杠和可选 SQL 分隔符的命令 从脚本文件执行代码 。source或别名 \.(不使用 SQL 定界符)既可以在 MySQL Shell 的 SQL 交互模式中使用,直接执行脚本,也可以在以批处理模式处理的 SQL 代码文件中,从文件。/tmp/mydata.sql因此,在 SQL 模式下使用 MySQL Shell,您现在可以使用以下三个命令中的任何一个以交互模式或批处理模式 执行文件中的脚本:
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 中发出的命令。Issuing \history以历史条目编号的顺序显示历史条目,可以与命令一起使用。 \history delete *entry_number*
该\history命令提供以下选项:
- 用于
\history save手动保存历史记录。 - 用于
\history delete entrynumber删除具有给定编号的单个历史条目。 - 用于 删除给定条目编号范围内的历史条目。如果 超过最后找到的历史条目编号,历史条目将被删除,直到并包括最后一个条目。
\history delete *firstnumber*-*lastnumber*``*lastnumber* - 用于删除历史条目 ,包括最后一个条目。
\history delete *number*-``*number* - 用于删除指定数量的历史记录条目,从最后一个条目开始往回计算。例如,删除最后 10 个历史条目。
\history delete -*number*``\history delete -10 - 用于
\history clear删除整个历史记录。
默认情况下,会话之间不保存历史记录,因此当您退出 MySQL Shell 时,您在当前会话期间发出的历史记录将丢失。如果要跨会话保留历史记录,请启用 MySQL Shell history.autoSave选项。有关详细信息,请参阅 第 5.5 节 “代码历史”。
重新哈希命令
禁用自动完成名称缓存功能后,使用\rehash命令手动更新缓存。例如,通过发出 命令加载新模式后,发出更新自动完成名称缓存的命令。在这个自动完成知道数据库中使用的名称之后,您可以自动完成表名等文本。请参阅 第 5.3 节,“代码自动完成”。 \use *schema*``\rehash
选项指令
该\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 包装函数或您指定用于显示输出的任何外部分页工具都不会对其进行处理。




