Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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.solibmyplugin.dlllibmyplugin.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 PLUGINUNINSTALL PLUGIN语句。

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