MySQL Shell 8.4  /  自定义 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 array 禁用自动密码存储的 URL 数组,支持通配符 *?
credentialStore.helper 取决于平台 string 用于获取或存储密码的凭据帮助程序的名称。支持一个特殊值 default 来使用平台的默认帮助程序。特殊值 >disabled< 禁用凭据存储。
credentialStore.savePasswords 提示 string 控制自动密码存储,支持的值:alwayspromptnever
dba.connectTimeout 5 大于 0 的浮点数 任何使用 AdminAPI 的会话连接超时前等待的时间(秒)。

dba.connectivityChecks

true

boolean

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

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

dba.gtidWaitTimeout 60 大于 0 的整数 在 AdminAPI 操作需要时(请参阅 第 7.9 节,“修改或解散 InnoDB 集群”)等待 GTID 事务应用的时间(秒)。
logFile MySQL Shell 日志文件的路径。 string 显示 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 string (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 integer 在 MySQL Shell 代码历史记录中存储的条目最大数量。
history.sql.ignorePattern *SELECT*:SHOW* string 与这些模式匹配的字符串不会添加到 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 string (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* string 指定冒号分隔的 glob 模式列表,以过滤掉由 logSql 记录的 SQL 语句(请参阅 第 12.4 节,“MySQL Shell SQL 日志记录”)。
logSql.ignorePatternUnsafe *IDENTIFIED*:*PASSWORD* string 指定定义冒号分隔的语句模式列表,以过滤掉由 logSql 记录的 SQL 语句(请参阅 第 12.4 节,“MySQL Shell SQL 日志记录”)。
mysqlPluginDir MySQL Shell 的 MySQL 插件目录。即,您在 Linux 平台上的 MySQL Shell 安装中的 lib/mysql/plugins 目录,以及在 Windows 平台上的 lib\mysql\plugins 目录。 string 设置插件目录的持久路径。
oci.configFile 您平台的默认位置。 string 设置 OCI CLI 配置文件的持久路径。
oci.profile DEFAULT string 指定在 OCI CLI 配置文件中使用哪个配置文件。
pager string 使用指定的外部分页工具来显示文本和结果。可以添加该工具的命令行参数(请参阅 第 4.6 节,“使用分页工具”)。
passwordsFromStdin false boolean stdin 而不是终端读取密码。
resultFormat table string (table、tabbed、vertical、json | json/pretty、ndjson | json/raw、json/array) 用于打印结果集的默认输出格式(请参阅 第 5.7 节,“输出格式”)。
sandboxDir 取决于平台 string 沙箱目录。在 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 string 自定义 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 配置接口

在 JavaScript 和 Python 模式下,shell.options 对象可用于更改 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 将退出并显示错误。