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:

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.

OptionDescription
--plugin_name=OFFDisables 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=FORCEEnables the plugin, but if plugin cannot initialize, the server will not start.
--plugin_name=FORCE_PLUS_PERMANENTEnables 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:

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.

See also

Comments

Comments loading...