MySQL Shell 9.0  /  自定义 MySQL Shell  /  配置 MySQL Shell 选项

13.4 配置 MySQL Shell 选项

您可以配置 MySQL Shell 以匹配您的偏好,例如启动到特定编程语言或以特定格式提供输出。配置选项可以仅为当前会话设置,也可以通过将更改持久保存到 MySQL Shell 配置文件来永久设置。所有选项的联机帮助均已提供。您可以使用 MySQL Shell \option 命令来配置选项,该命令在所有 MySQL Shell 模式下均可用以查询和更改配置选项。或者,在 JavaScript 和 Python 模式下,使用 shell.options 对象。

有效的配置选项

以下配置选项可以使用 \option 命令或 shell.options 脚本接口进行设置

选项名称 默认值 类型 效果
autocomplete.nameCache true boolean 启用数据库名称缓存以进行自动完成。
batchContinueOnError false boolean (只读) 在 SQL 批处理模式下,如果发现错误,强制处理继续。通过在命令行中添加 --force 来设置为 true。参见 附录 A, MySQL Shell 命令参考.
connectTimeout 10 大于 0 的浮点数 任何未使用 AdminAPI 的会话连接超时前等待的时间(以秒为单位)。
credentialStore.excludeFilters 数组 禁用自动密码存储的 URL 数组,支持通配符 *?
credentialStore.helper 取决于平台 字符串 用于获取或存储密码的凭据助手的名称。支持特殊值 default 以使用平台的默认助手。特殊值 >disabled< 禁用凭据存储。
credentialStore.savePasswords 提示 字符串 控制自动密码存储,支持的值:alwayspromptnever
dba.connectTimeout 5 大于 0 的浮点数 任何使用 AdminAPI 的会话连接超时前等待的时间(以秒为单位)。

dba.connectivityChecks

true

boolean

定义是否对 cluster.addInstance()clusterSet.createReplicaCluster()replicaSet.addInstance() 执行连接性检查,使用定义的 SSL 配置。

如果发生 SSL 错误,命令将停止并返回错误。

dba.gtidWaitTimeout 60 大于 0 的整数 等待 GTID 事务应用的时间(以秒为单位),当 AdminAPI 操作需要时(参见 第 7.9 节,“修改或解散 InnoDB 集群”)。
logFile MySQL Shell 日志文件的路径。 字符串 显示 MySQL Shell 日志文件的路径。(只读)此值只能从命令行使用 --log-file=path/to/logfile.log 选项更改。参见 附录 A, MySQL Shell 命令参考.
dba.logSql 0 0 到 2 之间的整数 (在 MySQL Shell 8.0.30 中已弃用。使用 logSql 代替。)记录 AdminAPI 操作执行的 SQL 语句(参见 第 12 章, MySQL Shell 日志记录和调试)。
dba.restartWaitTimeout 60 大于 0 的整数 在恢复操作期间等待事务应用的时间(以秒为单位)。在加入实例需要恢复大量数据时,使用它来配置更长的超时时间。参见 第 7.4.6 节,“将 MySQL Clone 与 InnoDB 集群一起使用”)。
defaultCompress false boolean 请求在每个全局会话中客户端和服务器之间发送的信息的压缩。仅影响经典 MySQL 协议连接(参见 第 4.3.7 节,“使用压缩连接”)。
defaultMode 字符串 (sql、js 或 py) 启动 MySQL Shell 时使用的模式(SQL、JavaScript 或 Python)。
devapi.dbObjectHandles true boolean 为 X DevAPI db 对象启用表和集合名称句柄。
history.autoSave false boolean 退出应用程序时保存(true)或清除(false)MySQL Shell 代码历史记录中的条目(参见 第 5.5 节,“代码历史记录”)。
history.maxSize 1000 整数 在 MySQL Shell 代码历史记录中存储的最大条目数。
history.sql.ignorePattern *SELECT*:SHOW* 字符串 与这些模式匹配的字符串不会添加到 MySQL Shell 代码历史记录中。
history.sql.syslog false boolean 将交互式 SQL 语句发送到操作系统的系统日志记录工具(参见 第 12.3 节,“用户 SQL 语句的系统日志记录”)。
logLevel info 1 到 8 之间的整数,或 none、internal、error、warning、info、debug、debug2、debug3 中的任何一个,分别表示 为应用程序日志设置日志记录级别(参见 第 12 章, MySQL Shell 日志记录和调试)。
logSql error 字符串 (off、error、on、all) 记录 MySQL Shell 操作执行的 SQL 语句(参见 第 12.4 节,“MySQL Shell SQL 日志记录”)。此日志选项不会记录从 SQL 模式交互式执行的用户 SQL 语句,仅记录 MySQL Shell 操作执行的 SQL 语句。记录所有 SQL 语句,除了在 logSql.ignorePatternUnsafelogSql.ignorePattern 选项中定义的语句。
  • off:不记录任何 SQL 语句。

  • error:仅在发生错误时记录带有错误消息的 SQL 语句。

  • on:记录所有 SQL 语句,除了在 logSql.ignorePatternUnsafelogSql.ignorePattern 选项中定义的语句。

  • all:记录所有 SQL 语句,除了在 logSql.ignorePatternUnsafe 中定义的语句。

logSql.ignorePattern *SELECT*:*SHOW* 字符串 指定冒号分隔的 glob 模式列表,以过滤掉 logSql 记录的 SQL 语句(参见 第 12.4 节,“MySQL Shell SQL 日志记录”)。
logSql.ignorePatternUnsafe *IDENTIFIED*:*PASSWORD* 字符串 指定定义冒号分隔的语句模式列表,以过滤掉 logSql 记录的 SQL 语句(参见 第 12.4 节,“MySQL Shell SQL 日志记录”)。
mysqlPluginDir MySQL Shell 的 MySQL 插件目录。也就是说,在 Linux 平台上,您的 MySQL Shell 安装的 lib/mysql/plugins 目录,在 Windows 平台上,是 lib\mysql\plugins 字符串 设置对插件目录的持久路径。
oci.configFile 您平台的默认位置。 字符串 设置对 OCI CLI 配置文件的持久路径。
oci.profile DEFAULT 字符串 指定在 OCI CLI 配置文件中使用哪个配置文件。
pager 字符串 使用指定的外部分页工具来显示文本和结果。可以添加工具的命令行参数(参见 第 4.6 节,“使用分页工具”)。
passwordsFromStdin false boolean stdin 读取密码而不是从终端读取。
resultFormat table 字符串 (table、tabbed、vertical、json | json/pretty、ndjson | json/raw、json/array) 用于打印结果集的默认输出格式(参见 第 5.7 节,“输出格式”)。
sandboxDir 取决于平台 字符串 沙箱目录。在 Windows 上,默认值为 C:\Users\MyUser\MySQL\mysql-sandboxes,在 Unix 系统上,默认值为 $HOME/mysql-sandboxes
showColumnTypeInfo false boolean 在 SQL 模式下,为结果集显示列元数据。
showWarnings true boolean 在 SQL 模式下,如果存在任何 SQL 警告,则自动显示。
ssh.bufferSize 10240 大于 0 的整数 通过 SSH 隧道传输数据的缓冲区大小(以字节为单位)(参见 第 4.3.6 节,“使用 SSH 隧道”)。
ssh.configFile 字符串 自定义 SSH 配置文件的路径,该文件将替换标准 SSH 配置文件 ~/.ssh/config 作为 SSH 隧道连接的默认配置文件(参见 第 4.3.6 节,“使用 SSH 隧道”)。
useWizards true boolean 启用向导模式。
verbose 0 0 到 4 之间的整数 启用到控制台的详细输出并设置详细程度(参见 第 12 章, MySQL Shell 日志记录和调试)。
注意

字符串值区分大小写。

列出的选项为 只读,无法修改。

outputFormat 选项现已弃用。使用 resultFormat 代替。

使用 \option 命令

MySQL Shell \option 命令使您能够在所有模式下查询和更改配置选项,从而除了 JavaScript 和 Python 模式之外,还可以从 SQL 模式进行配置。

该命令的使用方式如下

  • \option -h, --help [filter] - 打印与 filter 匹配的选项的帮助信息。

  • \option -l, --list [--show-origin] - 列出所有选项。--show-origin 会用有关上次更改值的方式的信息来增强列表,可能的值是

    • 命令行

    • 编译后的默认值

    • 配置文件

    • 环境变量

    • 用户定义

  • \option option_name - 打印选项的当前值。

  • \option [--persist] option_name value or name=value - 设置选项的值,如果指定了 --persist,则将其保存到配置文件。

  • \option --unset [--persist] <option_name> - 将选项的值重置为默认值,如果指定了 --persist,则从 MySQL Shell 配置文件中删除该选项。

注意

option_namefilter 的值区分大小写。

有关 option_name 的可能值的列表,请参见 有效的配置选项

使用 shell.options 配置接口

shell.options 对象在 JavaScript 和 Python 模式下可用,用于更改 MySQL Shell 选项值。您可以使用特定方法配置选项,或使用键值对,如下所示

MySQL JS > shell.options['history.autoSave']=1

除了键值对接口外,还提供以下方法

  • shell.options[optionName]: 列出选项的当前值。

  • shell.options.set(optionName, value): 将 optionName 设置为 value,以便在本会话中使用,更改不会保存到配置文件。

  • shell.options.setPersist(optionName, value): 将 optionName 设置为 value,以便在本会话中使用,并将更改保存到配置文件。在 Python 模式下,该方法是 shell.options.set_persist

  • shell.options.unset(optionName): 将 optionName 重置为默认值,以便在本会话中使用,更改不会保存到配置文件。

  • shell.options.unsetPersist(optionName): 将 optionName 重置为默认值,以便在本会话中使用,并将更改保存到配置文件。在 Python 模式下,该方法是 shell.options.unset_persist

选项名称被视为字符串,因此应使用 ' 字符包围。有关 optionName 的可能值的列表,请参见 有效的配置选项

使用以下命令配置 MySQL Shell 选项

MySQL JS > shell.options.set('history.maxSize', 5000)
MySQL JS > shell.options.setPersist('useWizards', 'true')
MySQL JS > shell.options.setPersist('history.autoSave', 1)

将选项恢复为其默认值,如下所示

MySQL JS > shell.options.unset('history.maxSize')
MySQL JS > shell.options.unsetPersist('useWizards')

配置文件

MySQL Shell 配置文件存储选项的值,以确保它们在各个会话之间持久化。这些值在启动时读取,当您使用持久化功能时,设置将保存到配置文件。

配置文件的位置是用户配置路径,文件名为 options.json。假设默认用户配置路径没有被定义环境变量 MYSQLSH_USER_CONFIG_HOME 覆盖,则配置文件的路径为

  • 在 Windows 上为 %APPDATA%\MySQL\mysqlsh

  • 在 Unix 上为 ~/.mysqlsh,其中 ~ 代表用户的 home 目录。

配置文件在您首次自定义配置选项时创建。此文件由 MySQL Shell 内部维护,不应手动编辑。如果在启动时在配置文件中找到无法识别的选项或具有不正确值的选项,MySQL Shell 将退出并显示错误。