INSTALL PLUGIN plugin_name SONAME 'shared_library_name'
此语句安装服务器插件。它需要系统表的
INSERT
权限,
mysql.plugin
因为它向该表添加一行以注册插件。
plugin_name
是库文件中包含的插件描述符结构中定义的插件名称(请参阅插件数据结构)。插件名称不区分大小写。为了获得最大的兼容性,插件名称应限制为 ASCII 字母、数字和下划线,因为它们用于 C 源文件、shell 命令行、M4 和 Bourne shell 脚本以及 SQL 环境。
shared_library_name
是包含插件代码的共享库的名称。该名称包括文件扩展名(例如,、、
libmyplugin.so
或
libmyplugin.dll
)
libmyplugin.dylib
。
共享库必须位于插件目录(由
plugin_dir
系统变量命名的目录)中。该库必须位于插件目录本身,而不是子目录中。默认情况下,
plugin_dir
是
配置变量plugin
命名的目录下的目录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
并重新安装插件。以这种方式重新启动插件可以使其在不重新启动服务器的情况下使用新的选项值。
有关在服务器启动时控制单个插件加载的选项,请参阅第 5.5.1 节,“安装和卸载插件”。--skip-grant-tables
如果您需要在给定选项(告诉服务器不要读取系统表)时为单个服务器启动加载插件
,请使用该--plugin-load
选项。请参阅
第 5.1.6 节,“服务器命令选项”。
要删除插件,请使用该UNINSTALL
PLUGIN
语句。
有关插件加载的其他信息,请参阅 第 5.5.1 节,“安装和卸载插件”。
要查看安装了哪些插件,请使用
语句
SHOW PLUGINS
或查询表。
INFORMATION_SCHEMA
PLUGINS
如果重新编译插件库需要重新安装,可以使用以下两种方法之一:
用于
UNINSTALL PLUGIN
卸载库中的所有插件,在插件目录下安装新的插件库文件,然后用于INSTALL PLUGIN
安装库中的所有插件。此过程的优点是可以在不停止服务器的情况下使用它。但是,如果插件库包含很多插件,则必须发出许多INSTALL PLUGIN
andUNINSTALL PLUGIN
语句。停止服务器,在插件目录下安装新的插件库文件,重启服务器。