• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • INSTALL PLUGIN语句

    INSTALL PLUGIN plugin_name SONAME 'shared_library_name'
    

    该语句安装服务器插件。它需要系统表的INSERT特权mysql.plugin

    plugin_name是库文件中包含的插件描述符结构中定义的插件名称(请参见“插件数据结构”)。插件名称不区分大小写。为了获得最大的兼容性,插件名称应限制为ASCII字母,数字和下划线,因为它们用于C源文件,shell命令行,M4和Bourne shell脚本以及SQL环境中。

    shared_library_name是包含插件代码的共享库的名称。该名称包括文件扩展名(例如,libmyplugin.solibmyplugin.dll,或libmyplugin.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选项启动服务器,则启动时不会加载插件。

    一个插件库可以包含多个插件。对于每个要安装的文件,请使用单独的INSTALL PLUGIN语句。每个语句命名一个不同的插件,但是它们都指定相同的库名。

    INSTALL PLUGIN使服务器读取选项(my.cnf)文件,就像在服务器启动期间一样。这使插件可以从那些文件中选取所有相关选项。即使在加载插件之前(如果使用了loose前缀),也可以将插件选项添加到选项文件中。也可以卸载插件,然后编辑my.cnf并重新安装该插件。以这种方式重新启动插件可以使其具有新的选项值,而无需重新启动服务器。

    有关控制服务器启动时单个插件加载的选项,请参见“MySQL服务器插件”。如果在--skip-grant-tables给出该选项时需要为单个服务器启动加载插件(告诉服务器不要读取系统表),请使用该--plugin-load选项。请参见“服务器命令选项”。

    要删除插件,请使用以下UNINSTALL PLUGIN语句。

    有关插件加载的更多信息,请参见“MySQL服务器插件”。

    要参见插件安装了哪些,使用SHOW PLUGINS的语句或查询INFORMATION_SCHEMAPLUGINS表。

    如果重新编译插件库并需要重新安装,则可以使用以下两种方法之一:

    • 使用UNINSTALL PLUGIN卸载所有插件库,安装在插件目录中的新插件的库文件,然后使用INSTALL PLUGIN安装的所有插件库。此过程的优点是可以在不停止服务器的情况下使用它。但是,如果插件库包含许多插件,则必须发出许多INSTALL PLUGINand UNINSTALL PLUGIN语句。
    • 停止服务器,在plugin目录中安装新的插件库文件,然后重新启动服务器。