Server plugins must be loaded in to the server before they can be used. MySQL enables you to load a plugin at server startup or at runtime. It is also possible to control the activation of loaded plugins at startup, and to unload them at runtime.
Server plugins must be known to the server before they can be
used. A plugin can be made known several ways, as described
here. In the following descriptions,
plugin_name stands for a plugin name
such as innodb or csv.
Built-in plugins:
A plugin that is built in to the server is known by the server
automatically. Normally, the server enables the plugin at
startup, although this can be changed with the
--
option.
plugin_name
Plugins registered in the
mysql.plugin table:
The mysql.plugin table serves as a registry
of plugins. The server normally enables each plugin listed in
the table at startup, although whether a given plugin is enabled
can be changed with the
--
option. If the server is started with the
plugin_name--skip-grant-tables option, it
does not consult this table and does not load the plugins listed
there.
Plugins named with the
--plugin-load option:
A plugin that is located in a plugin library file can be loaded
at server startup with the
--plugin-load option. Normally,
the server enables the plugin at startup, although this can be
changed with the
--
option.
plugin_name
The option value is a semicolon-separated list of
pairs. Each name=plugin_libraryname is the name of the
plugin, and plugin_library is the
name of the shared library that contains the plugin code. If a
plugin library is named without any preceding plugin name, the
server loads all plugins in the library. Each library file must
be located in the directory named by the
plugin_dir system variable.
This option does not register any plugin in the
mysql.plugin table. For subsequent restarts,
the server loads the plugin again only if
--plugin-load is given again.
That is, this option effects a one-time installation that
persists only for one server invocation.
--plugin-load enables plugins to
be loaded even when
--skip-grant-tables is given
(which causes the server to ignore the
mysql.plugin table).
--plugin-load also enables
plugins to be loaded at startup under configurations when
plugins cannot be loaded at runtime.
Plugins installed with the
INSTALL PLUGIN
statement:
A plugin that is 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.
If a plugin is named both using a
--plugin-load option and in the
mysql.plugin table, the server starts but
writes these messages to the error log:
100310 19:15:44 [ERROR] Function 'plugin_name' already exists 100310 19:15:44 [Warning] Couldn't load plugin named 'plugin_name' with soname 'plugin_object_file'.
Example: The --plugin-load option
installs a plugin at server startup. To install a plugin named
myplugin in 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:
mysql> INSTALL PLUGIN myplugin SONAME 'somepluglib.so';
INSTALL PLUGIN also causes
“permanent” plugin registration: The server lists
the plugin in the mysql.plugin table to
ensure that it is loaded on subsequent server 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, use
--plugin-load rather than
INSTALL PLUGIN.
While a plugin is loaded, information about it is available at
runtime from several sources, such as the
INFORMATION_SCHEMA.PLUGINS table
and the SHOW PLUGINS statement.
For more information, see
Section 5.1.8.2, “Obtaining Server Plugin Information”.
If the server knows about a plugin when it starts (for example,
because the plugin is named using a
--plugin-load option or
registered in the mysql.plugin table), the
server loads and enables the plugin by default. It is possible
to control activation for such a plugin using a
--
startup option named after the plugin. In the following
descriptions, plugin_name[=value]plugin_name stands for
a plugin name such as innodb or
csv. As with other options, dashes and
underscores are interchangeable in option names. For example,
--my_plugin=ON and
--my-plugin=ON are equivalent.
--
plugin_name=OFF
Tells the server to disable the plugin.
--
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=FORCE
Tells 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_PERMANENT
Like FORCE, but in addition prevents the
plugin from being unloaded at runtime. If a user attempts to
do so with UNINSTALL PLUGIN,
an error occurs. This value is available as of MySQL 5.5.7.
The values OFF, ON,
FORCE, and
FORCE_PLUS_PERMANENT are not case sensitive.
The activation state for plugins is 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, but must require that BLACKHOLE
initialization succeeds, and ARCHIVE should
be disabled. To accomplish that, use these lines in an option
file:
[mysqld] csv=ON blackhole=FORCE archive=OFF
The
--enable-
option format is supported as a synonym for
plugin_name--.
The
plugin_name=ON--disable-
and
plugin_name--skip-
option formats are supported as synonyms for
plugin_name--.
plugin_name=OFF
Before MySQL 5.1.36, plugin options are boolean options (see Section 4.2.3.2, “Program Option Modifiers”). That is, any of these options enable the plugin:
--plugin_name--plugin_name=1 --enable-plugin_name
And these options disable the plugin:
--plugin_name=0 --disable-plugin_name--skip-plugin_name
If you upgrade to MySQL 5.5 from a version older
than 5.1.36 and previously used options of the form
-- or
plugin_name=0--, the
equivalent options are now
plugin_name=1--
and
plugin_name=OFF--,
respectively. You also have the choice of requiring plugins to
start successfully by using
plugin_name=ON--
or
plugin_name=FORCE--.
plugin_name=FORCE_PLUS_PERMANENT
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 has been 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 from the startup command.
In addition, because xxxInnoDB is the
default storage engine, it will not start unless you specify
another available storage engine with
--default-storage-engine.
A plugin known to the server can be uninstalled to disable it at
runtime with the UNINSTALL PLUGIN
statement. The statement unloads the plugin and removes it from
the mysql.plugin 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 will not load the plugin
automatically for subsequent restarts.
UNINSTALL PLUGIN can unload
plugins regardless of whether they were loaded with
INSTALL PLUGIN or
--plugin-load.
UNINSTALL PLUGIN is subject to
these exceptions:
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 from
INFORMATION_SCHEMA.PLUGINS or
SHOW PLUGINS.
It cannot unload plugins for which the server was started
with
--,
which prevents plugin unloading at runtime. These can be
identified from the plugin_name=FORCE_PLUS_PERMANENTLOAD_OPTION column of
the INFORMATION_SCHEMA.PLUGINS
table.

User Comments
Add your own comment.