Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

15.7.4.4 安装插件语句

INSTALL PLUGIN plugin_name SONAME 'shared_library_name'

该语句安装服务器插件。它需要对 mysql.plugin 系统表的 INSERT 权限,因为它在该表中添加一行以注册插件。

plugin_name 是插件在库文件中的描述符结构中定义的名称(见 插件数据结构)。插件名称不区分大小写。为了最大限度地兼容,插件名称应该限制为 ASCII 字母、数字和下划线,因为它们在 C 源文件、shell 命令行、M4 和 Bourne shell 脚本、SQL 环境中使用。

shared_library_name 是包含插件代码的共享库的名称。名称包括文件扩展名(例如,libmyplugin.solibmyplugin.dlllibmyplugin.dylib)。

共享库必须位于插件目录中(由 plugin_dir 系统变量命名的目录)。库必须在插件目录本身中,而不是在子目录中。默认情况下,plugin_dirplugin 目录,位于由 pkglibdir 配置变量命名的目录下,但可以通过在服务器启动时设置 plugin_dir 的值来更改。例如,在 my.cnf 文件中设置其值:

[mysqld]
plugin_dir=/path/to/plugin/directory

如果 plugin_dir 的值是一个相对路径名,则它相对于 MySQL 基目录(basedir 系统变量的值)。

INSTALL PLUGIN 加载并初始化插件代码,以便插件可供使用。插件的初始化是通过执行其初始化函数来处理插件必须在使用前执行的任何设置。当服务器关闭时,它执行每个已加载插件的去初始化函数,以便插件有机会执行任何最终清理。

INSTALL PLUGIN 也将插件注册到 mysql.plugin 系统表中,添加一行以指示插件名称和库文件名。在正常启动序列中,服务器加载并初始化在 mysql.plugin 中注册的插件。这意味着插件只需使用 INSTALL PLUGIN 安装一次,而不是每次服务器启动。如果服务器以 --skip-grant-tables 选项启动,mysql.plugin 表中的插件注册将不会加载且不可用。

插件库可以包含多个插件。要安装每个插件,使用单独的 INSTALL PLUGIN 语句。每个语句命名不同的插件,但它们都指定相同的库名称。

INSTALL PLUGIN 使服务器读取选项(my.cnf)文件,就像在服务器启动时一样。这使插件可以从这些文件中获取相关选项。可以在加载插件之前将插件选项添加到选项文件中(如果使用 loose 前缀)。也可以卸载插件,编辑 my.cnf,然后重新安装插件。这使插件可以在不需要服务器重新启动的情况下获取新的选项值。

有关在服务器启动时控制单个插件加载的选项,请参阅 第 7.6.1 节,“安装和卸载插件”。如果需要在服务器启动时加载插件,而不是使用 --skip-grant-tables 选项(该选项告诉服务器不读取系统表),请使用 --plugin-load 选项。请参阅 第 7.1.7 节,“服务器命令选项”

要删除插件,请使用 UNINSTALL PLUGIN 语句。

有关插件加载的更多信息,请参阅 第 7.6.1 节,“安装和卸载插件”

要查看已安装的插件,请使用 SHOW PLUGINS 语句或查询 INFORMATION_SCHEMAPLUGINS 表。

如果您重新编译了插件库并需要重新安装它,可以使用以下两种方法之一:

  • 使用 UNINSTALL PLUGIN 卸载库中的所有插件,在插件目录中安装新的插件库文件,然后使用 INSTALL PLUGIN 安装库中的所有插件。这种方法的优点是可以在不停止服务器的情况下使用。但是,如果插件库包含许多插件,则必须发出许多 INSTALL PLUGINUNINSTALL PLUGIN 语句。

  • 停止服务器,在插件目录中安装新的插件库文件,然后重新启动服务器。