Rechercher dans le manuel MySQL
5.6.1 Installing and Uninstalling Plugins
Server plugins must be loaded into the server before they can be used. MySQL supports plugin loading at server startup and runtime. It is also possible to control the activation state of loaded plugins at startup, and to unload them at runtime.
While a plugin is loaded, information about it is available from
the INFORMATION_SCHEMA.PLUGINS
table
and the SHOW PLUGINS
statement. See
Section 5.6.2, “Obtaining Server Plugin Information”.
Installing Plugins
Before a server plugin can be used, it must be installed using
one of the following methods. In the descriptions,
plugin_name
stands for a plugin name
such as innodb
, csv
, or
validate_password
.
Built-in plugins:
A built-in plugin is known by the server automatically.
Normally, the server enables the plugin at startup. Some
built-in plugins permit this to be changed with the
--
option.
plugin_name
[=activation_state
]
Plugins registered in the
mysql.plugin
system table:
The plugin
table in the
mysql
system database serves as a registry of
plugins (other than built-in plugins, which need not be
registered). At startup, the server loads each plugin listed in
the table. Normally, for a plugin loaded from the
mysql.plugin
table, the server also enables
the plugin. This can be changed with the
--
option.
plugin_name
[=activation_state
]
If the server is started with the
--skip-grant-tables
option, it
does not consult the mysql.plugin
table and
does not load the plugins listed there.
Plugins named with command-line options:
A plugin located in a plugin library file can be loaded at
server startup with the
--plugin-load
,
--plugin-load-add
, or
--early-plugin-load
option.
Normally, for a plugin loaded at startup, the server also
enables the plugin. This can be changed with the
--
option.
plugin_name
[=activation_state
]
The --plugin-load
and
--plugin-load-add
options load
plugins after built-in plugins and storage engines have
initialized during the server startup sequence. The
--early-plugin-load
option is
used to load plugins that must be available prior to
initialization of built-in plugins and storage engines.
The value of each plugin-loading option is a semicolon-separated
list of
name
=
plugin_library
and plugin_library
values. Each
name
is the name of a plugin to load,
and plugin_library
is the name of the
library file that contains the plugin code. If a plugin library
is named without any preceding plugin name, the server loads all
plugins in the library. The server looks for plugin library
files in the directory named by the
plugin_dir
system variable.
Plugin-loading options do not register any plugin in the
mysql.plugin
table. For subsequent restarts,
the server loads the plugin again only if
--plugin-load
,
--plugin-load-add
, or
--early-plugin-load
is given
again. That is, the option produces a one-time
plugin-installation operation that persists for a single server
invocation.
--plugin-load
,
--plugin-load-add
, and
--early-plugin-load
enable
plugins to be loaded even when
--skip-grant-tables
is given
(which causes the server to ignore the
mysql.plugin
table).
--plugin-load
,
--plugin-load-add
, and
--early-plugin-load
also enable
plugins to be loaded at startup that cannot be loaded at
runtime.
The --plugin-load-add
option
complements the --plugin-load
option:
Each instance of
--plugin-load
resets the set of plugins to load at startup, whereas--plugin-load-add
adds a plugin or plugins to the set of plugins to be loaded without resetting the current set. Consequently, if multiple instances of--plugin-load
are specified, only the last one takes effect. With multiple instances of--plugin-load-add
, all of them take effect.The argument format is the same as for
--plugin-load
, but multiple instances of--plugin-load-add
can be used to avoid specifying a large set of plugins as a single long unwieldy--plugin-load
argument.--plugin-load-add
can be given in the absence of--plugin-load
, but any instance of--plugin-load-add
that appears before--plugin-load
has no effect because--plugin-load
resets the set of plugins to load.
For example, these options:
--plugin-load=x --plugin-load-add=y
are equivalent to this option:
--plugin-load="x;y"
But these options:
--plugin-load-add=y --plugin-load=x
are equivalent to this option:
--plugin-load=x
Plugins installed with the
INSTALL PLUGIN
statement:
A plugin located in a plugin library file can be loaded at
runtime with the INSTALL PLUGIN
statement. The statement also registers the plugin in the
mysql.plugin
table to cause the server to
load it on subsequent restarts. For this reason,
INSTALL PLUGIN
requires the
INSERT
privilege for the
mysql.plugin
table.
The plugin library file base name depends on your platform.
Common suffixes are .so
for Unix and
Unix-like systems, .dll
for Windows.
Example: The --plugin-load
option
installs a plugin at server startup. To install a plugin named
myplugin
from a plugin library file named
somepluglib.so
, use these lines in a
my.cnf
file:
[mysqld]
plugin-load=myplugin=somepluglib.so
In this case, the plugin is not registered in
mysql.plugin
. Restarting the server without
the --plugin-load
option causes
the plugin not to be loaded at startup.
Alternatively, the INSTALL PLUGIN
statement causes the server to load the plugin code from the
library file at runtime:
INSTALL PLUGIN
also causes
“permanent” plugin registration: The plugin is
listed in the mysql.plugin
table to ensure
that the server loads it on subsequent restarts.
Many plugins can be loaded either at server startup or at
runtime. However, if a plugin is designed such that it must be
loaded and initialized during server startup, attempts to load
it at runtime using INSTALL
PLUGIN
produce an error:
In this case, you must use
--plugin-load
,
--plugin-load-add
, or
--early-plugin-load
.
If a plugin is named both using a
--plugin-load
,
--plugin-load-add
, or
--early-plugin-load
option and
(as a result of an earlier INSTALL
PLUGIN
statement) in the
mysql.plugin
table, the server starts but
writes these messages to the error log:
[ERROR] Function 'plugin_name' already exists
[Warning] Couldn't load plugin named 'plugin_name'
with soname 'plugin_object_file'.
If the server knows about a plugin when it starts (for example,
because the plugin is named using a
--plugin-load
option or is
registered in the mysql.plugin
table), the
server loads and enables the plugin by default. It is possible
to control activation state for such a plugin using a
--
startup option, where plugin_name
[=activation_state
]plugin_name
is
the name of the plugin to affect, such as
innodb
, csv
, or
validate_password
. As with other options,
dashes and underscores are interchangeable in option names.
Also, activation state values are not case-sensitive. For
example, --my_plugin=ON
and
--my-plugin=on
are equivalent.
--
plugin_name
=OFFTells the server to disable the plugin. This may not be possible for certain built-in plugins, such as
mysql_native_password
.--
plugin_name
[=ON]Tells the server to enable the plugin. (Specifying the option as
--
without a value has the same effect.) If the plugin fails to initialize, the server runs with the plugin disabled.plugin_name
--
plugin_name
=FORCETells the server to enable the plugin, but if plugin initialization fails, the server does not start. In other words, this option forces the server to run with the plugin enabled or not at all.
--
plugin_name
=FORCE_PLUS_PERMANENTLike
FORCE
, but in addition prevents the plugin from being unloaded at runtime. If a user attempts to do so withUNINSTALL PLUGIN
, an error occurs.
Plugin activation states are visible in the
LOAD_OPTION
column of the
INFORMATION_SCHEMA.PLUGINS
table.
Suppose that CSV
,
BLACKHOLE
, and ARCHIVE
are
built-in pluggable storage engines and that you want the server
to load them at startup, subject to these conditions: The server
is permitted to run if CSV
initialization
fails, must require that BLACKHOLE
initialization succeeds, and should disable
ARCHIVE
. To accomplish that, use these lines
in an option file:
[mysqld]
csv=ON
blackhole=FORCE
archive=OFF
The
--enable-
option format is a synonym for
plugin_name
--
.
The
plugin_name
=ON--disable-
and
plugin_name
--skip-
option formats are synonyms for
plugin_name
--
.
plugin_name
=OFF
If a plugin is disabled, either explicitly with
OFF
or implicitly because it was enabled with
ON
but failed to initialize, aspects of
server operation that require the plugin will change. For
example, if the plugin implements a storage engine, existing
tables for the storage engine become inaccessible, and attempts
to create new tables for the storage engine result in tables
that use the default storage engine unless the
NO_ENGINE_SUBSTITUTION
SQL
mode is enabled to cause an error to occur instead.
Disabling a plugin may require adjustment to other options. For
example, if you start the server using
--skip-innodb
to disable InnoDB
, other
innodb_
options likely will need to be omitted at startup. In addition,
because xxx
InnoDB
is the default
storage engine, it will not start unless you specify another
available storage engine with
--default_storage_engine
. You
must also set
--default_tmp_storage_engine
.
At runtime, the UNINSTALL PLUGIN
statement disables and uninstalls a plugin known to the server.
The statement unloads the plugin and removes it from the
mysql.plugin
system table, if it is
registered there. For this reason,
UNINSTALL PLUGIN
statement
requires the DELETE
privilege for
the mysql.plugin
table. With the plugin no
longer registered in the table, the server does not load the
plugin automatically for subsequent restarts.
UNINSTALL PLUGIN
can unload a
plugin regardless of whether it was loaded at runtime with
INSTALL PLUGIN
or at startup with
a plugin-loading option, subject to these conditions:
It cannot unload plugins that are built in to the server. These can be identified as those that have a library name of
NULL
in the output fromINFORMATION_SCHEMA.PLUGINS
orSHOW PLUGINS
.It cannot unload plugins for which the server was started with
--
, which prevents plugin unloading at runtime. These can be identified from theplugin_name
=FORCE_PLUS_PERMANENTLOAD_OPTION
column of theINFORMATION_SCHEMA.PLUGINS
table.
To uninstall a plugin that currently is loaded at server startup with a plugin-loading option, use this procedure.
Remove any options related to the plugin from the
my.cnf
file.Restart the server.
Plugins normally are installed using either a plugin-loading option at startup or with
INSTALL PLUGIN
at runtime, but not both. However, removing options for a plugin from themy.cnf
file may not be sufficient to uninstall it if at some pointINSTALL PLUGIN
has also been used. If the plugin still appears in the output fromINFORMATION_SCHEMA.PLUGINS
orSHOW PLUGINS
, useUNINSTALL PLUGIN
to remove it from themysql.plugin
table. Then restart the server again.
Document created the 26/06/2006, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/mysql-rf-plugin-loading.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.