10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 从本手册中摘录

5.6.1安装和卸载插件

必须在使用之前将服务器插件加载到服务器中。MySQL支持服务器启动和运行时的插件加载。还可以在启动时控制加载插件的激活状态,并在运行时卸载它们。

当一个插件被加载时,关于它的信息可以在第5.6.2节,“获取服务器插件信息”

安装插件

在使用服务器插件之前,必须使用以下方法之一安装它。的描述,plugin_name表示插件名称,如innodbcsv,或validate_password

内置插件

内置插件会被服务器自动识别。默认情况下,服务器在启动时启用插件。一些内置插件允许使用--plugin_name[=activation_state选择。

插件在mysql.plugin系统表中注册

mysql.plugin系统表作为插件的注册表(内置插件除外,不需要注册)。在正常启动过程中,服务器加载注册在表中的插件。控件中加载的插件的默认值mysql.plugin表,服务器也启用插件。可以使用--plugin_name[=activation_state选择。

如果服务器是用--skip-grant-tables选项,插件注册mysql.plugin表未加载,不可用。

使用命令行选项命名的插件

位于插件库文件中的插件可以在服务器启动时加载——plugin-load——plugin-load-add,或——early-plugin-load选择。通常,对于在启动时加载的插件,服务器也会启用该插件。可以使用--plugin_name[=activation_state选择。

——plugin-load——plugin-load-add“内置插件和存储引擎”中的“选项”加载插件已在服务器启动序列期间初始化。的——early-plugin-load选项用于加载在内置插件和存储引擎初始化之前必须可用的插件。

每个插件加载选项的值是一个分号分隔的列表plugin_library名称plugin_library值。每一个plugin_library包含插件代码的库文件的名称,和每个名称要加载的插件的名称。如果一个插件库的名称不带任何前缀,则服务器加载该插件库中的所有插件。使用前面的插件名,服务器只从库中加载已命名的插件。属性命名的目录中查找插件库文件plugin_dir系统变量。

插件加载选项不注册任何插件mysql.plugin表格对于后续重启,服务器只有在以下情况才会再次加载插件——plugin-load——plugin-load-add,或——early-plugin-load再次给出。也就是说,该选项产生了一次性插件安装操作,该操作持续用于单个服务器调用。

——plugin-load——plugin-load-add,——early-plugin-load使插件加载,即使当--skip-grant-tables给出(导致服务器忽略该服务器mysql.plugin表)。——plugin-load——plugin-load-add,——early-plugin-load还可以在启动时加载不能在运行时加载的插件。

——plugin-load-add选项补充了这一点——plugin-load选择:

例如,以下选项:

——plugin-load = x plugin-load-add = y

相当于以下选项:

-plugin-load-add = x -plugin-load-add = y

和也相当于这个选项:

——plugin-load = " x, y "

但这些选择:

——plugin-load-add = y plugin-load = x

等价于这个选项:

-plugin-load = x
使用INSTALL PLUGIN语句安装的插件

位于插件库文件中的插件可以在运行时加载安装插件声明。语句中还注册了插件mysql.plugin表以使服务器在后续重启时加载它。由于这个原因,安装插件需要这一点特权的mysql.plugin表格

插件库的文件名取决于你的平台。常见的后缀是。所以对于Unix和类Unix系统,. dll对于Windows。

例子:——plugin-load-add选项在服务器启动时安装一个插件。安装一个插件myplugin.从插件库文件命名somepluglib.so,使用这些线在一个我.CNF.文件:

(mysqld) plugin-load-add =并且= somepluglib.so

在这种情况下,插件未注册mysql.plugin.不使用——plugin-load-add选项导致插件在启动时不被加载。

或者,安装插件语句导致服务器在运行时从库文件中加载插件代码:

安装插件myplugin SONAME 'somepluglib.so';

安装插件也会引起永恒的插件注册:插件在mysql.plugin表,以确保服务器在后续重启时加载它。

可以在服务器启动或运行时加载许多插件。但是,如果设计插件,则必须在服务器启动期间加载和初始化它,尝试在运行时将其加载安装插件产生一个错误:

mysql>安装plugin myplugin soname'somepluglib.so';错误1721(HY000):插件“MyPlugin”标记为不动态可安装。您必须停止服务器安装它。

在这种情况下,您必须使用——plugin-load——plugin-load-add,或——early-plugin-load

如果一个插件被命名为a——plugin-load——plugin-load-add,或——early-plugin-load期权和(由于较早安装插件声明)mysql.plugin表,服务器启动,但将这些消息写入错误日志:

(错误)函数的plugin_name'已经存在[警告]无法加载插件'plugin_name'有soname'plugin_object_file'.

控制插件激活状态

如果服务器在启动时知道某个插件(例如,因为插件的名称是使用——plugin-load-add选项或注册在mysql.plugin表),服务器默认加载并启用插件。控件可以控制此类插件的激活状态--plugin_name[=activation_state启动选项,plugin_name是否影响插件的名称,例如innodbcsv,或validate_password.与其他选项一样,破折号和下划线在选项名称中是可以互换的。此外,激活状态值不是区分大小写的。例如,- my_plugin =上——my-plugin =是等价的。

  • --plugin_name=下

    告诉服务器禁用插件。对于某些内置插件,比如mysql_native_password

  • --plugin_name[= ON]

    告诉服务器启用插件。(将选项指定为--plugin_name如果没有值具有相同的效果。)如果插件无法初始化,则服务器禁用插件运行。

  • --plugin_name=力

    告诉服务器启用插件,但如果插件初始化失败,服务器不会启动。换句话说,该选项强制服务器在启用或不启用插件的情况下运行。

  • --plugin_name= FORCE_PLUS_PERMANENT

    喜欢,但另外防止插件在运行时卸载。如果用户尝试这样做卸载插件发生错误。

插件激活状态可见LOAD_OPTION列的Information_schema.plugins.表格

假设CSV黑洞,档案是内置的可插拔存储引擎,您希望服务器在启动时加载它们,取决于以下条件CSV初始化失败,必须这样黑洞初始化成功,应该禁用档案.要做到这一点,在选项文件中使用以下行:

[mysqld] csv=ON blackhole=FORCE archive=OFF

——使plugin_name选项格式是--plugin_name=上.的- 可行 -plugin_name- 跳过-plugin_name选项格式是同义词--plugin_name=下

如果插件被禁用,可以显式使用或者是隐含的,因为它启用了但是初始化失败,服务器操作方面需要插件更改。例如,如果插件实现了一个存储引擎,那么该存储引擎的现有表将无法访问,如果试图为该存储引擎创建新表,则会导致使用默认存储引擎的表,除非NO_ENGINE_SUBSTITUTIONSQL模式已启用以导致错误发生错误。

禁用插件可能需要调整到其他选项。例如,如果您开始使用服务器——skip-innodb禁用InnoDB,其他innodb_xxx在启动时可能也需要省略一些选项。此外,由于InnoDB是默认存储引擎,除非您指定其他可用的存储引擎,否则无法启动——default_storage_engine.您还必须设置——default_tmp_storage_engine

卸载插件

在运行时,卸载插件语句禁用并卸载服务器已知的插件。语句卸载插件并将其从mysql.plugin系统表,如果它注册在那里。由于这个原因,卸载插件声明要求删除特权的mysql.plugin表格由于插件不再在表中注册,服务器在随后的重启过程中不会加载插件。

卸载插件无论是在运行时是否加载,都可以卸载插件安装插件或者在启动时使用插件加载选项,取决于以下条件:

  • 它不能卸载内置在服务器上的插件。可以将它们标识为具有库名的在输出中Information_schema.plugins.显示插件

  • 它不能卸载服务器启动时使用的插件--plugin_name= FORCE_PLUS_PERMANENT,防止插件在运行时卸载。这些可以从中识别LOAD_OPTION列的Information_schema.plugins.表格

要卸载当前在服务器启动时加载的插件,请使用插件加载选项,使用此过程。

  1. 从中删除我.CNF.文件与插件相关的任何选项和系统变量。如果任何插件系统变量被持久化到mysqld-auto.cnf.文件,删除他们使用重置持续var_name每个人都可以删除它。

  2. 重新启动服务器。

  3. 插件通常在启动时使用插件加载选项或with来安装安装插件在运行时,但不是两者都是。控件中移除插件的选项我.CNF.文件可能不足以在某些时候卸载它安装插件也被使用过。如果插件仍然出现在输出中Information_schema.plugins.显示插件,使用卸载插件把它从mysql.plugin表格然后重新启动服务器。

插件和用户定义函数

插件在安装时也可以自动安装相关的用户定义函数(udf)。如果是,卸载时插件也会自动卸载这些udf。