•A component for checking passwords. See Section 6.4.3, “The Password Validation Component” . 

•Keyring components provide secure storage for sensitive information. See Section 6.4.4, “The MySQL Keyring” . 

•A component that enables applications to add their own message events to the audit log. See Section 6.4.6, “The Audit Message Component” . 

•A component that implements a loadable function for accessing query attributes. See Section 9.6, “Query Attributes” . 

System and status variables implemented by a component are exposed when the component is installed and have names that begin with a component-specific prefix. For example, the log_filter_dragnet error log filter component implements a system variable named log_error_filter_rules , the full name of which is dragnet.log_error_filter_rules . To refer to this variable, use the full name. 

The following sections describe how to install and uninstall components, and how to determine at runtime which components are installed and obtain information about them. 

For information about the internal implementation of components, see the MySQL Server Doxygen documentation, available at https://dev.mysql.com/doc/index-other.html. For example, if you intend to write your own components, this information is important for understanding how components work. 

## 5.5.1 Installing and Uninstalling Components 

Components must be loaded into the server before they can be used. MySQL supports manual component loading at runtime and automatic loading during server startup. 

While a component is loaded, information about it is available as described in Section 5.5.2, “Obtaining Component Information” . 

The INSTALL COMPONENT  and UNINSTALL COMPONENT  SQL statements enable component loading and unloading. For example: 

INSTALL COMPONENT ’file://component_validate_password’; UNINSTALL COMPONENT ’file://component_validate_password’; 

A loader service handles component loading and unloading, and also registers loaded components in the mysql.component  system table. 

The SQL statements for component manipulation affect server operation and the mysql.component system table as follows: 

• INSTALL COMPONENT  loads components into the server. The components become active immediately. The loader service also registers loaded components in the mysql.component  system table. For subsequent server restarts, the loader service loads any components listed in mysql.component during the startup sequence. This occurs even if the server is started with the --skip-grant-tables option. 

• UNINSTALL COMPONENT  deactivates components and unloads them from the server. The loader service also unregisters the components from the mysql.component  system table so that the server no longer loads them during its startup sequence for subsequent restarts. 

Compared to the corresponding INSTALL PLUGIN  statement for server plugins, the INSTALL COMPONENT  statement for components offers the significant advantage that it is not necessary to know any platform-specific file name suffix for naming the component. This means that a given INSTALL COMPONENT  statement can be executed uniformly across platforms. 

