文档主页
MySQL 8.4 参考手册
相关文档 下载本手册

15.7.4.4 INSTALL PLUGIN 语句

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语句。

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