15.7.4.4 安装插件语句
INSTALL PLUGIN plugin_name SONAME 'shared_library_name'
该语句安装服务器插件。它需要对mysql.plugin
系统表的INSERT
权限,因为它将添加一行到该表以注册插件。
plugin_name
是插件在库文件中定义的名称(见Plugin Data Structures)。插件名称不区分大小写。为了最大化兼容性,插件名称应该限制于ASCII字母、数字和下划线,因为它们在C源文件、shell命令行、M4和Bourne shell脚本中使用。
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
将加载和初始化插件代码,以使插件可供使用。插件通过执行其初始化函数来初始化,处理插件在使用前必须进行的任何设置。当服务器关闭时,它将执行每个已加载插件的 deinitialization 函数,以便插件可以执行任何最后清理操作。
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
语句。
关于插件加载的additional信息,请见第7.6.1节,“安装和卸载插件”。
要查看已安装的插件,请使用SHOW PLUGINS
语句或查询PLUGINS
表。
如果您重新编译插件库并需要重新安装它,可以使用以下方法之一:
-
使用
UNINSTALL PLUGIN
卸载库中的所有插件,安装新的插件库文件到插件目录,然后使用INSTALL PLUGIN
安装库中的所有插件。这一过程的优点是可以在不停止服务器的情况下执行。然而,如果插件库中包含许多插件,您需要发出许多INSTALL PLUGIN
和UNINSTALL PLUGIN
语句。 -
停止服务器,安装新的插件库文件到插件目录,然后重新启动服务器。