MySQL Shell 8.4  /  ...  /  创建 MySQL Shell 插件

10.3.1 创建 MySQL Shell 插件

MySQL Shell 插件可用于包含注册为 MySQL Shell 报告的函数(请参阅 第 10.1 节 “使用 MySQL Shell 生成报告”)以及作为用户定义的 MySQL Shell 全局对象提供的扩展对象的成员函数(请参阅 第 10.2 节 “向 MySQL Shell 添加扩展对象”)。单个插件可以包含并注册多个函数,并且可以包含报告和扩展对象成员的混合。当 MySQL 完成启动时,由 MySQL Shell 插件注册为报告或扩展对象成员的函数将立即可用。

MySQL Shell 插件是一个包含适合该语言的初始化脚本的文件夹(一个 init.jsinit.py 文件)。初始化脚本是插件的入口点。一个插件只能包含一种语言的代码,因此,如果您要创建一个包含 Python 中定义的成员和 JavaScript 中定义的成员的扩展对象,则必须将这些成员存储为单独的语言特定的插件。

为了在启动时自动加载 MySQL Shell 插件,其文件夹必须位于 MySQL Shell 用户配置路径下的 plugins 文件夹中。MySQL Shell 会在此位置搜索任何初始化脚本。MySQL Shell 会忽略 plugins 位置中名称以点 (.) 开头的任何文件夹,但除此之外,您为插件文件夹使用的名称并不重要。

plugins 文件夹的默认路径在 Unix 上为 ~/.mysqlsh/plugins,在 Windows 上为 %AppData%\MySQL\mysqlsh\plugins。可以通过定义环境变量 MYSQLSH_USER_CONFIG_HOME 在所有平台上覆盖用户配置路径。此变量的值将替换 Windows 上的 %AppData%\MySQL\mysqlsh\ 或 Unix 上的 ~/.mysqlsh/

如果在加载插件时发现错误,则会显示警告,并且错误详细信息将在 MySQL Shell 应用程序日志中提供。要查看有关加载过程的更多详细信息,请在启动 MySQL Shell 时使用 --log-level=debug 选项。

加载 MySQL Shell 插件时,以下对象可作为全局变量使用

  • 内置全局对象 shelldbautil

  • Shell API 主模块 mysql

  • X DevAPI 主模块 mysqlx

  • AdminAPI 主模块 dba