INSTALL PLUGIN plugin_name SONAME 'shared_library_name'
此语句安装服务器插件。它需要对 mysql.plugin
系统表的 INSERT
权限,因为它会在该表中添加一行以注册插件。
plugin_name
是插件的名称,如库文件中的插件描述符结构中定义(参见 插件数据结构)。插件名称不区分大小写。为了最大程度地兼容,插件名称应限制为 ASCII 字母、数字和下划线,因为它们在 C 源文件、shell 命令行、M4 和 Bourne shell 脚本以及 SQL 环境中使用。
shared_library_name
是包含插件代码的共享库的名称。该名称包括文件扩展名(例如,libmyplugin.so
、libmyplugin.dll
或 libmyplugin.dylib
)。
共享库必须位于插件目录(由系统变量 plugin_dir
指定的目录)。库必须位于插件目录本身,而不是子目录。默认情况下,plugin_dir
是由配置变量 pkglibdir
指定的目录下的 plugin
目录,但可以通过在服务器启动时设置 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_SCHEMA
的 PLUGINS
表。
如果重新编译插件库并需要重新安装它,可以使用以下两种方法之一
使用
UNINSTALL PLUGIN
卸载库中的所有插件,在插件目录中安装新的插件库文件,然后使用INSTALL PLUGIN
安装库中的所有插件。此过程的优点是可以无需停止服务器即可使用。但是,如果插件库包含许多插件,则必须发出许多INSTALL PLUGIN
和UNINSTALL PLUGIN
语句。停止服务器,在插件目录中安装新的插件库文件,然后重新启动服务器。