必须在使用之前将服务器插件加载到服务器中。MySQL支持服务器启动和运行时的插件加载。还可以在启动时控制加载插件的激活状态,并在运行时卸载它们。
当一个插件被加载时,关于它的信息可以在第5.6.2节,“获取服务器插件信息”.
在使用服务器插件之前,必须使用以下方法之一安装它。的描述,plugin_name
表示插件名称,如innodb
,csv
,或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
重置一组插件以在启动时加载,而——plugin-load-add
在不重置当前集的情况下将一个或多个插件添加到要加载的插件集。因此,如果多个实例——plugin-load
被指定,只有最后一个适用。有多个实例的——plugin-load-add
,所有这些都适用。参数格式与此相同
——plugin-load
,但有多个实例——plugin-load-add
可用于避免将大量插件指定为单长笨重的插件——plugin-load
论点。——plugin-load-add
可以在缺席的情况下给予吗——plugin-load
,但任何实例——plugin-load-add
出现之前——plugin-load
没有效果,因为——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
是否影响插件的名称,例如innodb
,csv
,或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_SUBSTITUTION
SQL模式已启用以导致错误发生错误。
禁用插件可能需要调整到其他选项。例如,如果您开始使用服务器——skip-innodb
禁用InnoDB
,其他innodb_
在启动时可能也需要省略一些选项。此外,由于xxx
InnoDB
是默认存储引擎,除非您指定其他可用的存储引擎,否则无法启动——default_storage_engine
.您还必须设置——default_tmp_storage_engine
.
在运行时,卸载插件
语句禁用并卸载服务器已知的插件。语句卸载插件并将其从mysql.plugin
系统表,如果它注册在那里。由于这个原因,卸载插件
声明要求删除
特权的mysql.plugin
表格由于插件不再在表中注册,服务器在随后的重启过程中不会加载插件。
卸载插件
无论是在运行时是否加载,都可以卸载插件安装插件
或者在启动时使用插件加载选项,取决于以下条件:
它不能卸载内置在服务器上的插件。可以将它们标识为具有库名的
零
在输出中Information_schema.plugins.
或显示插件
.它不能卸载服务器启动时使用的插件
--
,防止插件在运行时卸载。这些可以从中识别plugin_name
= FORCE_PLUS_PERMANENTLOAD_OPTION
列的Information_schema.plugins.
表格
要卸载当前在服务器启动时加载的插件,请使用插件加载选项,使用此过程。
从中删除
我.CNF.
文件与插件相关的任何选项和系统变量。如果任何插件系统变量被持久化到mysqld-auto.cnf.
文件,删除他们使用重置持续
每个人都可以删除它。var_name
重新启动服务器。
插件通常在启动时使用插件加载选项或with来安装
安装插件
在运行时,但不是两者都是。控件中移除插件的选项我.CNF.
文件可能不足以在某些时候卸载它安装插件
也被使用过。如果插件仍然出现在输出中Information_schema.plugins.
或显示插件
,使用卸载插件
把它从mysql.plugin
表格然后重新启动服务器。