MySQL Shell 8.4  /  MySQL Shell 命令参考  /  mysqlsh — MySQL Shell

A.1 mysqlsh — MySQL Shell

MySQL Shell 是 MySQL 的高级命令行客户端和代码编辑器。除了 SQL 之外,MySQL Shell 还提供 JavaScript 和 Python 的脚本功能。有关使用 MySQL Shell 的信息,请参阅MySQL Shell 8.4.0。当 MySQL Shell 通过 X 协议连接到 MySQL 服务器时,可以使用 X DevAPI 处理关系数据和文档数据,请参阅将 MySQL 用作文档存储。MySQL Shell 包括 AdminAPI,它使您能够使用 InnoDB 集群、InnoDB ClusterSet 和 InnoDB ReplicaSet 部署;请参阅第 6 章,MySQL AdminAPI

这里描述的许多选项都与 MySQL Shell 和 MySQL 服务器实例之间的连接有关。有关更多信息,请参阅第 4.3 节“MySQL Shell 连接”

mysqlsh支持以下命令行选项。

表 A.1 mysqlsh 选项

选项名称 描述
-- API 命令行集成的开始
--auth-method 要使用的身份验证方法
--authentication-oci-client-config-profile OCI 配置文件中的配置文件
--cluster 连接到 InnoDB 集群
--column-type-info 打印结果集中列的元数据
--compress 压缩客户端和服务器之间发送的所有信息
--connect-timeout 全局会话的连接超时
--credential-store-helper 密码的 Secret Store 帮助程序
--database 要使用的模式(--schema 的别名)
--dba 在与 MySQL 5.7 服务器连接时启用 X 协议
--execute 执行命令并退出
--file 要在批处理模式下处理的文件
--force 即使发生错误,也要继续在 SQL 和批处理模式下运行
--get-server-public-key 从服务器请求 RSA 公钥
--help 显示帮助消息并退出
--histignore 未添加到历史记录中的字符串
--host MySQL 服务器实例所在的主机
--interactive 在批处理模式下模拟交互模式
--js, --javascript 在 JavaScript 模式下启动
--json 以 JSON 格式打印输出
--log-file 此实例的日志文件位置
--log-level 指定日志记录级别
--log-sql 将所有 MySQL Shell 生成的 SQL 语句记录到 MySQL Shell 日志文件。
--mysql, -mc 使用经典 MySQL 协议创建会话
--mysql-plugin-dir 安装客户端插件的目录
--mysqlx, -mx 使用 X 协议创建会话
--name-cache 根据活动的默认架构启用表名的自动加载
--no-name-cache 禁用自动完成
--no-password 未为此连接提供密码
--no-wizard, --nw 禁用交互式向导
--oci-config-file 要使用的 OCI 配置文件的路径
--pager 用于显示输出的外部分页工具
--password 连接到服务器时使用的密码
--password1 多因素身份验证的密码 1(等效于 --password)
--password2 多因素身份验证的密码 2
--password3 多因素身份验证的密码 3
--passwords-from-stdin 从 stdin 读取密码
--plugin-authentication-webauthn-client-preserve-privacy 允许用户选择用于断言的密钥
--port 连接的 TCP/IP 端口号
--py, --python 在 Python 模式下启动
--pyc 执行 Python 命令并退出。此选项之后指定的任何选项都将被视为已处理命令的参数。
--quiet-start 启动时不打印介绍性信息
--redirect-primary 确保连接到 InnoDB 集群的主节点
--redirect-secondary 确保连接到 InnoDB 集群的辅助节点
--register-factor 必须为其完成注册的多因素身份验证因素
--result-format 设置此会话的输出格式
--save-passwords 密码在 Secret Store 中的存储方式
--schema 要使用的模式
--server-public-key-path 包含 RSA 公钥的文件的路径名
--show-warnings 如果有任何警告,则在每个语句之后显示警告(在 SQL 模式下)
--socket 要使用的 Unix 套接字文件或 Windows 命名管道(仅限经典 MySQL 协议)
--sql 在 SQL 模式下启动,自动检测用于连接的协议
--sqlc 使用经典 MySQL 协议连接在 SQL 模式下启动
--sqlx 使用 X 协议连接在 SQL 模式下启动
--ssh 连接到 SSH 服务器的 URI
--ssh-config-file 连接到 SSH 服务器的配置文件
--ssh-identity-file 连接到 SSH 服务器的身份文件
--ssl-ca 包含受信任 SSL 证书颁发机构列表的文件
--ssl-capath 包含受信任 SSL 证书颁发机构证书文件的目录
--ssl-cert 包含 X.509 证书的文件
--ssl-cipher 要使用的 SSL 密码的名称
--ssl-crl 包含证书吊销列表的文件
--ssl-crlpath 包含证书吊销列表文件的目录
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 与服务器连接的所需安全状态
--syslog 将交互式 SQL 语句记录到系统日志记录工具
--tabbed 以制表符分隔的格式显示输出
--table 以表格格式显示输出
--tls-version 加密连接允许使用的 TLS 协议
--uri URI 格式的会话信息
--user 连接到服务器时使用的 MySQL 用户名
--verbose 激活控制台的详细输出
--version 显示版本信息并退出
--vertical 垂直显示所有 SQL 结果

  • --help, -?

    显示帮助消息并退出。

  • --

    标记 mysqlsh 选项列表的结尾以及 MySQL Shell 的 API 命令行集成的命令及其参数的开始。您可以使用以下语法从命令行执行 MySQL Shell 全局对象的方法

    mysqlsh [options]  -- object method [arguments]

    有关更多信息,请参阅第 5.8 节“API 命令行集成”

  • --auth-method=method

    用于帐户的身份验证方法。取决于用于帐户密码的身份验证插件。对于使用经典 MySQL 协议的 MySQL Shell 连接,请指定身份验证插件的名称,例如caching_sha2_password。对于使用 X 协议的 MySQL Shell 连接,请指定以下选项之一

    AUTO

    让库选择身份验证方法。

    FALLBACK

    让库选择身份验证方法,但不使用任何与 MySQL 5.7 不兼容的身份验证方法。

    FROM_CAPABILITIES

    让库使用服务器实例宣布的功能选择身份验证方法。

    MYSQL41

    使用 MySQL 4.1 及更高版本支持的质询-响应身份验证协议,该协议不发送明文密码。此选项与使用mysql_native_password身份验证插件的帐户兼容。

    PLAIN

    发送明文密码进行身份验证。仅对加密连接使用此选项。此选项可用于使用缓存的凭据对使用caching_sha2_password身份验证插件的帐户进行身份验证,前提是存在 SSL 连接。请参阅将 X 插件与缓存 SHA-2 身份验证插件一起使用

    SHA256_MEMORY

    使用存储在内存中的哈希密码进行身份验证。此选项可用于使用缓存的凭据对使用caching_sha2_password身份验证插件的帐户进行身份验证,其中存在非 SSL 连接。请参阅将 X 插件与缓存 SHA-2 身份验证插件一起使用

    对于使用经典 MySQL 协议的 MySQL Shell 连接,请指定用户帐户使用的身份验证插件的名称,例如caching_sha2_password(这是 MySQL 8.0 中创建的用户帐户的默认设置)。MySQL Shell 使用 MySQL 客户端库对这些连接进行客户端身份验证。以下身份验证方法需要额外的配置

    clear_text_password

    简单的 LDAP 身份验证需要mysql_clear_password客户端插件。它内置于 MySQL 客户端库中,但为了安全起见,默认情况下不启用它。当您使用--auth-method=clear_text_password连接选项指定它时,MySQL Shell 会启用并使用该插件。此身份验证类型仅适用于使用 SSL 或套接字的安全连接,因此您必须在使用它之前配置安全连接。请注意,使用选项ssl-mode=preferred时,不能保证 SSL 连接,因此设置了此选项的连接不被视为 SSL 连接。有关更多信息,请参阅第 4.3.4 节“使用加密连接”

    authentication_ldap_sasl_client

    authentication_ldap_sasl_client 客户端插件用于基于 SASL 的 LDAP 身份验证,包括 GSSAPI/Kerberos 身份验证。它未内置于 MySQL 客户端库中,但包含在 MySQL 服务器软件包中。要加载它,您必须使用 --mysql-plugin-dir 选项指定 MySQL 服务器软件包中插件的路径。

    authentication_kerberos_client

    authentication_kerberos_client 客户端插件用于 Kerberos 身份验证。它未内置于 MySQL 客户端库中,但包含在 MySQL 服务器软件包中。要加载它,您必须使用 --mysql-plugin-dir 选项指定 MySQL 服务器软件包中插件的路径。

    从 MySQL 8.0.27 开始,当使用 --auth-method 选项指定 authentication_ldap_sasl_clientauthentication_kerberos_client 插件,并使用 --mysql-plugin-dir 选项提供插件路径时,支持用于 Kerberos 身份验证的缓存票据授予票据 (TGT)。若要使用缓存的 TGT,请勿在连接选项中指定用户名和密码。当您指定这些插件之一并且未指定用户名和密码时,MySQL Shell 不会提供系统用户名,不会提示输入密码,也不会尝试使用 Secret Store 帮助程序检索或存储凭据。

    有关更多信息,请参阅 第 4.3.5 节“使用 LDAP 和 Kerberos 身份验证”

  • --cluster

    确保目标服务器是 InnoDB Cluster 的一部分,如果是,则将 cluster 全局变量设置为集群对象。

  • --column-type-info

    在 SQL 模式下,在打印查询返回的结果集之前,打印结果集中每一列的元数据,例如列类型和排序规则。

    列类型以 MySQL Shell 使用的类型 (Type) 和原始数据库使用的类型 (DBType) 返回。对于使用经典 MySQL 协议的 MySQL Shell 连接,DBType 与协议返回的类型相同,而对于 X 协议连接,DBType 是从可用信息推断出来的。列长度 (Length) 以字节为单位返回。

  • --compress[={required|preferred|disabled}], -C [{required|preferred|disabled}]

    使用此连接控制在客户端和服务器之间发送的信息的压缩。它也适用于经典 MySQL 协议和 X 协议连接,您可以选择指定 requiredpreferreddisabled。如果仅指定 --compress,则默认值为 --compress=required。有关在所有版本中使用 MySQL Shell 的压缩控制的信息,请参阅 第 4.3.7 节“使用压缩连接”

  • --connect-timeout=ms

    配置 MySQL Shell 等待(以毫秒为单位)建立通过命令行参数指定的全局会话的时间。

  • --credential-store-helper=helper

    用于存储和检索密码的 Secret Store 帮助程序。请参阅 第 4.4 节“可插拔密码存储”

  • --database=name, -D name

    要使用的默认架构。这是 --schema 的别名。

  • --dba=enableXProtocol

    在 MySQL Shell 8.4.0 中已弃用。

    在与 MySQL 5.7 服务器的连接上启用 X 插件,以便您可以将 X 协议连接用于后续连接。需要使用经典 MySQL 协议的连接。与默认启用 X 插件的 MySQL 8.0 服务器无关。

  • --dba-log-sql[=0|1|2]

    记录 AdminAPI 操作(沙箱操作除外)执行的 SQL 语句。默认情况下,即使设置了 --log-level--verbose 选项,此类语句也不会写入 MySQL Shell 应用程序日志文件或作为详细输出发送到控制台。该选项的值是 0 到 2 范围内的整数。0 不记录或显示此类语句,这是您未指定该选项时的默认行为。1 记录 AdminAPI 操作执行的 SQL 语句,但 SELECT 语句和 SHOW 语句除外(如果您在命令行上指定该选项而不指定值,则这是默认设置)。2 记录常规 AdminAPI 操作执行的完整 SQL 语句,包括 SELECTSHOW 语句。有关更多信息,请参阅 第 12 章 MySQL Shell 日志记录和调试

  • --log-sql[=off|error|on|all|unfiltered]

    将 MySQL Shell 执行的所有 SQL 语句记录到 MySQL Shell 日志文件 mysqlsh.log

    以下选项可用

    off

    不记录 MySQL Shell SQL 语句。

    error

    (默认值)仅记录失败的 MySQL Shell SQL 语句。

    on

    记录所有 MySQL Shell SQL 语句,但与 logSql.ignorePatternlogSql.ignorePatternUnsafe 中定义的忽略模式匹配的语句除外。有关更多信息,请参阅 过滤 SQL 日志记录

    all

    记录所有 MySQL Shell SQL 语句,但与 logSql.ignorePatternUnsafe 中定义的忽略模式匹配的语句除外。有关更多信息,请参阅 过滤 SQL 日志记录

    unfiltered

    记录所有 MySQL Shell SQL 语句,不执行过滤。

  • --execute=command, -e command

    使用当前活动的语言执行命令并退出。此选项与 --file=file_name 选项互斥。

  • --file=file_name, -f file_name

    指定要在批处理模式下处理的文件。在此之后指定的任何选项都将用作已处理文件的参数。

  • --force

    即使出现错误,也要继续在 SQL 和批处理模式下进行处理。

  • --histignore=strings

    指定不添加到 MySQL Shell 历史记录中的字符串。字符串之间用冒号分隔。匹配不区分大小写,并且可以使用通配符 * 和 ?。默认忽略的字符串指定为 *IDENTIFIED*:*PASSWORD*。请参阅 第 5.5 节“代码历史记录”

  • --host=host_name, -h host_name

    连接到给定主机上的 MySQL 服务器。在 Windows 上,如果您指定 --host=.-h .(将主机名指定为句点),则 MySQL Shell 将使用默认命名管道(名称为 MySQL)或您使用 --socket 选项指定的备用命名管道进行连接。

  • --get-server-public-key

    MySQL Shell 等效于 --get-server-public-key

    如果给定 --server-public-key-path=file_name 并指定有效的公钥文件,则它优先于 --get-server-public-key

    重要

    仅支持经典 MySQL 协议连接。

    请参阅 缓存 SHA-2 可插拔身份验证

  • --interactive[=full], -i

    在批处理模式下模拟交互模式。

  • --js, --javascript

    在 JavaScript 模式下启动。

  • --json[={off|pretty|raw}]

    控制此会话中 MySQL Shell 输出的 JSON 包装。此选项用于将 MySQL Shell 与其他程序连接,例如作为测试的一部分。要将查询结果输出更改为使用 JSON 格式,请参阅 --result-format

    --json 选项没有值或值为 pretty 时,输出将生成为格式化的 JSON。如果值为 raw,则输出将以原始 JSON 格式生成。在任何这些情况下,--result-format 选项及其别名以及 resultFormat MySQL Shell 配置选项的值都将被忽略。如果值为 off,则不会进行 JSON 包装,并且结果集将以 --result-format 选项或 resultFormat 配置选项指定的格式正常输出。

  • --log-file=path

    更改此 MySQL Shell 实例的 MySQL Shell 应用程序日志文件 mysqlsh.log 的位置。应用程序日志文件的默认位置是用户配置路径,在 Windows 上默认为 %APPDATA%\MySQL\mysqlsh\,在 Unix 上默认为 ~/.mysqlsh/。您可以通过定义环境变量 MYSQLSH_USER_CONFIG_HOME 来覆盖所有 MySQL Shell 实例的用户配置路径。--log-file 选项适用于单个 MySQL Shell 实例,这意味着不同的实例可以写入不同的位置。

  • --log-level=N

    更改 MySQL Shell 应用程序日志文件 mysqlsh.log 的日志记录级别,或禁用对该文件的日志记录。该选项需要一个值,该值可以是 1 到 8 范围内的整数,也可以是 noneinternalerrorwarninginfodebugdebug2debug3 之一。指定 1 或 none 将禁用对应用程序日志文件的日志记录。如果您未指定此选项,则默认级别为 5 (info)。请参阅第 12 章,*MySQL Shell 日志记录和调试*

  • -ma

    在 MySQL Shell 8.0.13 版本中已弃用。自动尝试使用 X 协议创建会话连接,如果 X 协议不可用,则回退到经典 MySQL 协议。

  • --mysql, --mc

    将启动时创建的全局会话设置为使用经典 MySQL 协议连接。

  • --mysql-plugin-dir=path

    通过覆盖 shell.options.mysqlPluginDir 设置的值,设置客户端身份验证插件的非持久路径。客户端插件包含在 MySQL 服务器软件包中,并且可以相对于 MySQL 基目录(basedir 系统变量的值)定位。例如

    • Windows 主机类型上的 C:\program files\mysql\mysql Server 8.0\lib\plugin

    • Linux 主机类型上的 /usr/local/mysql/lib/plugin

    有关服务器随附的客户端身份验证插件的列表,请参阅可用的身份验证插件

  • --mysqlx, --mx

    将启动时创建的全局会话设置为使用 X 协议连接。

  • --name-cache

    根据活动的默认架构启用表名的自动加载。

  • --no-name-cache, -A

    禁用根据活动的默认架构和 DevAPI db 对象加载表名以进行自动补全。使用 \rehash 手动重新加载名称信息。

  • --no-password

    连接到服务器时,如果用户拥有无密码帐户(这很不安全,不建议这样做),或者如果正在使用套接字对等凭据身份验证(用于 Unix 套接字连接),则必须使用 --no-password 显式指定未提供密码,并且不需要密码提示。

  • --no-wizard, -nw

    禁用由创建连接、dba.configureInstance()Cluster.rebootClusterFromCompleteOutage() 等操作提供的交互式向导。当您想编写 MySQL Shell 脚本并且不想显示交互式提示时,请使用此选项。有关更多信息,请参阅第 5.6 节,“批处理代码执行”第 5.8 节,“API 命令行集成”

  • --oci-config-file=pathToConfigFile

    配置要与 OCI 身份验证一起使用的 OCI 配置文件的路径,以连接到 HeatWave 服务数据库系统。

    此处定义的值将覆盖 oci.configFile 选项中定义的值。

    有关更多信息,请参阅使用 authentication_oci 插件进行身份验证

  • --authentication-oci-client-config-profile=profileName

    配置 OCI 配置文件中要与 OCI 身份验证一起使用的配置文件,以连接到 HeatWave 服务数据库系统。

    此处定义的值将覆盖 oci.profile 选项中定义的值。

    有关更多信息,请参阅使用 authentication_oci 插件进行身份验证

  • --pager=name

    MySQL Shell 使用的外部分页器工具,用于显示在 SQL 模式下执行的语句和其他选定命令(如联机帮助)的文本输出。如果您未设置分页器,则将使用 PAGER 环境变量指定的分页器。请参阅第 4.6 节,“使用分页器”

  • --passwords-from-stdin

    从标准输入而不是从终端读取密码。此选项不会影响任何其他密码行为,例如密码提示。

  • --password[=password], -ppassword

    连接到服务器时要使用的密码。连接到 MySQL Shell 时接受的最大密码长度为 128 个字符。

    • 带有值的 --password=password-ppassword)提供用于连接的密码。使用长格式 --password= 时,必须使用等号,并且选项与其值之间不能有空格。使用短格式 -p 时,选项与其值之间不能有空格。如果在任一情况下使用空格,则该值不会被解释为密码,而可能会被解释为另一个连接参数。

      在命令行上指定密码被认为是不安全的。请参阅最终用户密码安全指南。您可以使用选项文件来避免在命令行上提供密码。

    • 没有值且没有等号的 --password 或没有值的 -p 会请求密码提示。

    • 空值的 --password=--no-password 具有相同的效果,后者指定用户在没有密码的情况下进行连接。连接到服务器时,如果用户拥有无密码帐户(这很不安全,不建议这样做),或者如果正在使用套接字对等凭据身份验证(用于 Unix 套接字连接),则必须使用其中一种方法显式指定未提供密码,并且不需要密码提示。

  • --password1[=password]

    --password1--password2--password3 是需要多因素身份验证的帐户要使用的密码。您最多可以提供三个密码。这些选项的工作方式与 --password 选项相同,并且 --password1 被视为等效于该选项。您可以在命令行上的选项后指定密码值(这很不安全),或者如果在不指定密码值的情况下给出选项,则 MySQL Shell 会依次提示用户输入每个密码。仅支持使用命令行参数建立的经典 MySQL 协议连接。

  • --password2[=password]

    需要多因素身份验证的帐户的第二种身份验证方法的密码。请参阅 --password1 选项的说明。

  • --password3[=password]

    需要多因素身份验证的帐户的第三种身份验证方法的密码。请参阅 --password1 选项的说明。

  • --plugin-authentication-webauthn-client-preserve-privacy={OFF|ON}

    命令行格式 --plugin-authentication-webauthn-client-preserve-privacy
    类型 布尔值
    默认值 false

    确定在为给定的 RP ID(赋予依赖方服务器的唯一名称,即 MySQL 服务器)存储了多个可发现凭据的情况下,断言如何发送到服务器。如果 FIDO2 设备包含给定 RP ID 的多个驻留密钥,则此选项允许用户选择用于断言的密钥。它提供了客户端用户可以设置的两个可能值。默认值为 false。如果设置为 false,则使用给定 RP ID 的所有可用凭据对质询进行签名,并将所有签名发送到服务器。如果设置为 true,则会提示用户选择用于签名的凭据。

    注意

    如果设备不支持驻留密钥功能,则此选项无效。

    有关更多信息,请参阅 WebAuthn 可插拔身份验证

  • --port=端口号, -P 端口号

    用于连接的 TCP/IP 端口号。默认端口为 33060。

  • --py, --python

    以 Python 模式启动。

  • --pyc=pythonCommand, -c

    执行 Python 命令并退出。此选项之后指定的任何选项都将被视为已处理命令的参数。

  • --pym

    在 MySQL Shell 的 Python 模式下将指定的 Python 模块作为脚本执行。--pym 的工作方式与 Python 的 -m 命令行选项相同。

  • --quiet-start[=1|2]

    启动时不打印介绍信息。MySQL Shell 通常会打印有关产品的信息、有关会话的信息(例如默认架构和连接 ID)、警告消息以及在启动和连接期间返回的任何错误。如果指定 --quiet-start 且不带值或值为 1,则不会打印有关 MySQL Shell 产品的信息,但会打印会话信息、警告和错误。如果值为 2,则仅打印错误。

  • --redirect-primary

    确保目标服务器是 InnoDB Cluster 或 InnoDB ReplicaSet 的一部分,如果它不是主服务器,则找到主服务器并连接到它。如果使用此选项时以下任何一项为真,则 MySQL Shell 将退出并报错:

    • 未指定实例

    • 在 InnoDB Cluster 上,组复制未激活

    • InnoDB Cluster 元数据不存在

    • 没有仲裁

  • --register-factor=

    命令行格式 --register-factor=值
    类型 字符串

    在可以使用基于 WebAuthn 设备的身份验证之前,必须为其执行 FIDO/FIDO2 设备注册的一个或多个因素。此选项值必须是单个值,或者是以逗号分隔的两个值。每个值必须为 2 或 3,因此允许的选项值为 '2''3''2,3''3,2'

    例如,需要为第三身份验证因素注册的帐户按如下方式调用 mysql 客户端:

    mysqlsh --user=user_name --register-factor=3

    需要为第二和第三身份验证因素注册的帐户按如下方式调用 mysql 客户端:

    mysqlsh --user=user_name --register-factor=2,3

    如果注册成功,则建立连接。如果存在具有待处理注册的身份验证因素,则在尝试连接到服务器时,连接将置于待处理注册模式。在这种情况下,请断开连接并使用正确的 --register-factor 值重新连接以完成注册。

    注册是一个两步过程,包括启动注册完成注册步骤。启动注册步骤执行以下语句:

    ALTER USER user factor INITIATE REGISTRATION

    该语句返回一个结果集,其中包含 32 字节的质询、用户名和依赖方 ID(请参阅 authentication_webauthn_rp_id)。

    完成注册步骤执行以下语句:

    ALTER USER user factor FINISH REGISTRATION SET CHALLENGE_RESPONSE AS 'auth_string'

    该语句完成注册,并将以下信息作为 auth_string 的一部分发送到服务器:身份验证器数据、X.509 格式的可选证明证书和签名。

    启动和注册步骤必须在单个连接中执行,因为客户端在启动步骤期间收到的质询会保存到客户端连接处理程序。如果注册步骤由不同的连接执行,则注册将失败。--register-factor 选项同时执行启动和注册步骤,这避免了上述故障情况,并且无需手动执行 ALTER USER 启动和注册语句。

    --register-factor 选项仅适用于 mysql 客户端。其他 MySQL 客户端程序不支持它。

    有关信息,请参阅 使用 WebAuthn 身份验证

  • --replicaset

    确保目标服务器属于 InnoDB ReplicaSet,如果是,则使用 InnoDB ReplicaSet 填充 rs 全局变量。然后,您可以使用 rs 全局变量管理 InnoDB ReplicaSet,例如通过发出 rs.status()

  • --redirect-secondary

    确保目标服务器是单主 InnoDB Cluster 或 InnoDB ReplicaSet 的一部分,如果它不是辅助服务器,则找到辅助服务器并连接到它。如果使用此选项时以下任何一项为真,则 MySQL Shell 将退出并报错:

    • 在 InnoDB Cluster 上,组复制未激活

    • InnoDB Cluster 元数据不存在

    • 没有仲裁

    • 集群不是单主集群,并且在多主模式下运行

    • 没有可用的辅助服务器,例如,因为只有一个服务器实例

  • --result-format={table|tabbed|vertical|json|json/pretty|ndjson|json/raw|json/array}

    为此会话设置 resultFormat MySQL Shell 配置选项的值。格式如下:

    table

    交互模式的默认值,除非在配置文件中为 resultFormat 配置选项持久设置了另一个值,在这种情况下,将应用该默认值。也可以使用 --table 别名。

    tabbed

    批处理模式的默认值,除非在配置文件中为 resultFormat 配置选项持久设置了另一个值,在这种情况下,将应用该默认值。也可以使用 --tabbed 别名。

    vertical

    生成与 SQL 查询的 \G 终止符等效的输出。也可以使用 --vertical-E 别名。

    json 或 json/pretty

    生成格式良好的 JSON。

    ndjson 或 json/raw

    生成以换行符分隔的原始 JSON。

    json/array

    生成包装在 JSON 数组中的原始 JSON。

    如果使用 --json 命令行选项激活会话输出的 JSON 包装,则将忽略 --result-format 选项及其别名以及 resultFormat 配置选项的值。

  • --save-passwords={always|prompt|never}

    控制是否自动将密码存储在密码存储库中。always 表示始终存储密码,除非它们已在存储库中或服务器 URL 被过滤器排除。never 表示从不存储密码。prompt 是默认值,表示询问用户是否存储密码。请参阅 第 4.4 节“密码存储插件”

  • --schema=名称, -D 名称

    要使用的默认架构。

  • --server-public-key-path=文件名

    MySQL Shell 中与 --server-public-key-path 等效的选项。

    如果给定 --server-public-key-path=file_name 并指定有效的公钥文件,则它优先于 --get-server-public-key

    重要

    仅支持经典 MySQL 协议连接。

    请参阅 caching_sha2_password 插件 缓存 SHA-2 可插拔身份验证

  • --show-warnings={true|false}

    如果指定 true(默认值),则在 SQL 模式下,如果存在任何警告,MySQL Shell 会在每条 SQL 语句之后显示警告。如果指定 false,则不显示警告。

  • --socket[=路径], -S [路径]

    在 Unix 上,如果指定了路径,则该路径是用于连接的 Unix 套接字文件的名称。如果指定 --socket 且不带值和等号,或指定 -S 且不带值,则使用适用于相应协议的默认 Unix 套接字文件。

    在 Windows 上,路径是用于连接的命名管道的名称。管道名称不区分大小写。在 Windows 上,必须指定路径,并且 --socket 选项仅适用于经典 MySQL 协议会话。

    如果在 Unix 上指定了端口或主机名(localhost 除外),或者在 Windows 上指定了句点 (.),则无法指定套接字。

  • --sql

    在 SQL 模式下启动,如果未在连接信息中指定要使用的协议,则自动检测协议。如果未指定要使用的协议,则默认为 X 协议连接,回退到经典的 MySQL 协议连接。要强制连接使用特定协议,请参阅 --sqlx--sqlc 选项。或者,指定要使用的协议作为类似 URI 的连接字符串的一部分,或使用 --port 选项。有关更多信息,请参阅 第 4.3 节,“MySQL Shell 连接”MySQL Shell 端口

  • --sqlc

    在 SQL 模式下启动,强制连接使用经典 MySQL 协议,例如,将 MySQL Shell 与不支持 X 协议的服务器一起使用。如果您没有将端口指定为连接的一部分,则当您提供此选项时,MySQL Shell 将使用默认的经典 MySQL 协议端口,该端口通常为 3306。您要连接到的端口必须支持经典 MySQL 协议,因此,例如,如果您指定的连接使用 X 协议默认端口 33060,则连接将失败并显示错误。有关更多信息,请参阅 第 4.3 节,“MySQL Shell 连接”MySQL Shell 端口

  • --sqlx

    在 SQL 模式下启动,强制连接使用 X 协议。如果您没有将端口指定为连接的一部分,则当您提供此选项时,MySQL Shell 将使用默认的 X 协议端口,该端口通常为 33060。您要连接到的端口必须支持 X 协议,因此,例如,如果您指定的连接使用经典 MySQL 协议默认端口 3306,则连接将失败并显示错误。有关更多信息,请参阅 第 4.3 节,“MySQL Shell 连接”MySQL Shell 端口

  • --ssh=str

    创建一个 SSH 隧道,提供到 MySQL 服务器实例的加密连接。以 [用户@]主机[:端口] 格式提供用于连接到 SSH 服务器的 URI,例如

    --ssh [email protected]:2222

    使用此选项时,您还必须为连接到 MySQL 服务器实例指定 --user--host--port 选项或 URI。有关从 MySQL Shell 进行 SSH 隧道连接的信息,请参阅 第 4.3.6 节,“使用 SSH 隧道”

  • --ssh-config-file=路径

    指定用于连接到 SSH 服务器的 SSH 配置文件的路径。如果未指定此选项,则可以使用 MySQL Shell 配置选项 ssh.configFile 将自定义文件设置为默认文件。如果未设置 ssh.configFile,则默认为标准 SSH 配置文件 ~/.ssh/config。如果使用空值指定 --ssh-config-file,则忽略 ssh.configFile 指定的默认文件,而使用 ~/.ssh/config 文件。

  • --ssh-identity-file=路径

    指定用于连接到 SSH 服务器的标识文件的路径。如果未指定此选项,则默认为 SSH 配置文件夹中的标准私钥文件 (~/.ssh/id_rsa)。

  • --ssl*

    --ssl 开头的选项指定是否使用 SSL 连接到服务器,并指示在哪里可以找到 SSL 密钥和证书。mysqlsh SSL 选项的功能与 MySQL Server 的 SSL 选项相同,有关更多信息,请参阅 加密连接的命令选项

    mysqlsh 接受以下 SSL 选项:--ssl-mode--ssl-ca--ssl-capath--ssl-cert--ssl-cipher--ssl-crl--ssl-crlpath--ssl-key--tls-version

  • --syslog

    将您在 MySQL Shell 的 SQL 模式下发出的 SQL 语句发送到操作系统的系统日志记录工具(Unix 上的 syslog 或 Windows 事件日志)。仅当 MySQL Shell 在交互模式下启动时,才会对 SQL 语句进行系统日志记录,因此可以通过正常启动或使用 --interactive 选项启动。如果在启动时使用 --execute--file 选项以批处理模式运行 mysqlsh,则不会进行系统日志记录。有关更多信息,请参阅 第 12.3 节,“用户 SQL 语句的系统日志记录”

  • --tabbed

    在交互模式下以制表符分隔的格式显示结果。该模式的默认值为表格格式。此选项是 --result-format=tabbed 选项的别名。

  • --table

    在批处理模式下以表格格式显示结果。该模式的默认值为制表符分隔的格式。此选项是 --result-format=table 选项的别名。

  • --uri=str

    在启动时创建连接,并在类似 URI 的字符串中指定连接选项,如 使用类似 URI 的字符串或键值对连接到服务器 中所述。

  • --user=用户名, -u 用户名

    连接到服务器时要使用的 MySQL 用户名。

  • --verbose[=0|1|2|3|4]

    激活到控制台的详细输出,并指定详细程度。该值是 0 到 4 之间的整数。0 表示不显示任何消息,这是未指定该选项时的默认详细程度设置。1 表示显示错误、警告和信息消息(如果在命令行上指定该选项而不指定值,则这是默认设置)。2、3 和 4 添加更高级别的调试消息。有关更多信息,请参阅 第 12 章,MySQL Shell 日志记录和调试

  • --version, -V

    显示 MySQL Shell 的版本并退出。

  • --vertical, -E

    垂直显示结果,就像对 SQL 查询使用 \G 终止符时一样。此选项是 --result-format=vertical 选项的别名。