Plugin Overview
Contents
Plugins are server components that enhance MariaDB in some way. These can be anything from new storage engines, plugins for enhancing full-text parsing, or even small enhancements, such as a plugin to get a timestamp as an integer.
Viewing plugin information
There are a number of ways to see which plugins are currently active. Note that there are a large number of plugins that are built-in and active by default, and which cannot be removed from the server.
The SHOW PLUGINS statement will list all active plugins.
SHOW PLUGINS; +----------------------------+----------+--------------------+---------+---------+ | Name | Status | Type | Library | License | +----------------------------+----------+--------------------+---------+---------+ ... | mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL | | mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL | | MRG_MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | ... +----------------------------+----------+--------------------+---------+---------+
Plugins with the Library
listed as NULL
are built-in and cannot be uninstalled.
More detailed information can be retrieved by querying the INFORMATION_SCHEMA.PLUGINS table.
SELECT * FROM information_schema.PLUGINS\G ... *************************** 6. row *************************** PLUGIN_NAME: CSV PLUGIN_VERSION: 1.0 PLUGIN_STATUS: ACTIVE PLUGIN_TYPE: STORAGE ENGINE PLUGIN_TYPE_VERSION: 100003.0 PLUGIN_LIBRARY: NULL PLUGIN_LIBRARY_VERSION: NULL PLUGIN_AUTHOR: Brian Aker, MySQL AB PLUGIN_DESCRIPTION: CSV storage engine PLUGIN_LICENSE: GPL LOAD_OPTION: FORCE PLUGIN_MATURITY: Stable PLUGIN_AUTH_VERSION: 1.0 *************************** 7. row *************************** PLUGIN_NAME: MEMORY PLUGIN_VERSION: 1.0 PLUGIN_STATUS: ACTIVE PLUGIN_TYPE: STORAGE ENGINE PLUGIN_TYPE_VERSION: 100003.0 PLUGIN_LIBRARY: NULL PLUGIN_LIBRARY_VERSION: NULL PLUGIN_AUTHOR: MySQL AB PLUGIN_DESCRIPTION: Hash based, stored in memory, useful for temporary tables PLUGIN_LICENSE: GPL LOAD_OPTION: FORCE PLUGIN_MATURITY: Stable PLUGIN_AUTH_VERSION: 1.0 ...
Here, if the PLUGIN_LIBRARY
is NULL
, the plugin is built-in and cannot be uninstalled.
Finally, you can query the mysql.plugin table. This table only contains plugins that have been loaded with INSTALL SONAME, INSTALL PLUGIN or the mysql_plugin utility, not built-in plugins, or plugins loaded with the --plugin-load
option. It also contains much less information, just the name and library.
SELECT * FROM mysql.plugin; +------+------------+ | name | dl | +------+------------+ | PBXT | libpbxt.so | +------+------------+
Installing Plugins
Plugins can be installed in three ways:
- With the INSTALL SONAME or the INSTALL PLUGIN statement when the server is running
- With the
--plugin-load
or (since 10.0)--plugin-load-add
mysqld option when the server starts. - With the mysql_plugin utility when the server is offline.
The --plugin-load
option takes a semicolon-separated list of plugins to load, where each plugin is identified as name=library
, where name is the plugin name and library is the plugin library in the plugin directory, specified by the plugin_dir system variable.
--plugin-load
does not add records to the mysql.plugins table, so if the server is restarted without the same --plugin-load
options, those plugins not listed will not be loaded.
Plugins installed with INSTALL SONAME, INSTALL PLUGIN or mysql_plugin will automatically be loaded the next time the server starts, unless specifically uninstalled, or deactivated, as described below. The difference between these statements is that INSTALL PLUGIN
installs a single plugin from a given library, while INSTALL SONAME
installs all plugins from the given library (which could be required).
Controlling Plugin Activation
Plugins that are listed in the mysql.plugin table, or listed as a --plugin-load
option, will by default be loaded. This behavior can be changed, with --plugin-name options.
Option | Description |
---|---|
--plugin_name=OFF | Disables the plugin without removing it from the mysql.plugins table. |
--plugin_name[=ON] | Enables the plugin. If the plugin cannot initialize, the server will run with the plugin disabled. |
--plugin_name=FORCE | Enables the plugin, but if plugin cannot initialize, the server will not start. |
--plugin_name=FORCE_PLUS_PERMANENT | Enables the plugin, but if plugin cannot initialize, the server will not start. In addition, the plugin cannot be uninstalled while the server is running. Added in MariaDB 5.5. |
The plugin status is listed in the PLUGIN_STATUS field of the INFORMATION_SCHEMA.PLUGINS table.
Uninstalling Plugins
Plugins that are found in the mysql.plugin table, that is those that were installed with INSTALL SONAME, INSTALL PLUGIN or mysql_plugin can be uninstalled in one of two ways:
- The UNINSTALL SONAME or the UNINSTALL PLUGIN statement while the server is running
- With mysql_plugin while the server is offline.
Plugins that were enabled as a --plugin-load
option do not need to be uninstalled. If --plugin-load
is omitted the next time the server starts, or the plugin is not listed as one of the --plugin-load
entries, the plugin will not be loaded.
UNINSTALL PLUGIN uninstalls a single installed plugin, while UNINSTALL SONAME uninstalls all plugins belonging to a given library.