#### 6.4.1.4 Client-Side Cleartext Pluggable Authentication

[]()[]()

 A client-side authentication plugin is available that enables clients to send passwords to the server as cleartext, without hashing or encryption. This plugin is built into the MySQL client library.

 The following table shows the plugin name.

[]()

**Table 6.18 Plugin and Library Names for Cleartext Authentication**

|  Plugin or File  |   Plugin or File Name   |
|------------------|-------------------------|
|Server-side plugin|  None, see discussion   |
|Client-side plugin| `mysql_clear_password`  |
|   Library file   |None (plugin is built in)|

 Many client-side authentication plugins perform hashing or encryption of a password before the client sends it to the server. This enables clients to avoid sending passwords as cleartext.

 Hashing or encryption cannot be done for authentication schemes that require the server to receive the password as entered on the client side. In such cases, the client-side `mysql_clear_password` plugin is used, which enables the client to send the password to the server as cleartext. There is no corresponding server-side plugin. Rather, `mysql_clear_password` can be used on the client side in concert with any server-side plugin that needs a cleartext password. (Examples are the PAM and simple LDAP authentication plugins; see [Section 6.4.1.5, “PAM Pluggable Authentication”](pam-pluggable-authentication.html), and [Section 6.4.1.7, “LDAP Pluggable Authentication”](ldap-pluggable-authentication.html).)

 The following discussion provides usage information specific to cleartext pluggable authentication. For general information about pluggable authentication in MySQL, see [Section 6.2.17, “Pluggable Authentication”](pluggable-authentication.html).

Note

 Sending passwords as cleartext may be a security problem in some configurations. To avoid problems if there is any possibility that the password would be intercepted, clients should connect to MySQL Server using a method that protects the password. Possibilities include SSL (see [Section 6.3, “Using Encrypted Connections”](encrypted-connections.html)), IPsec, or a private network.

 To make inadvertent use of the `mysql_clear_password` plugin less likely, MySQL clients must explicitly enable it. This can be done in several ways:

* Set the `LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN` environment variable to a value that begins with `1`, `Y`, or `y`. This enables the plugin for all client connections.

* The [**mysql**](mysql.html), [**mysqladmin**](mysqladmin.html), [**mysqlcheck**](mysqlcheck.html), [**mysqldump**](mysqldump.html), [**mysqlshow**](mysqlshow.html), and [**mysqlslap**](mysqlslap.html) client programs support an `--enable-cleartext-plugin` option that enables the plugin on a per-invocation basis.

* The [`mysql_options()`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-options.html) C API function supports a `MYSQL_ENABLE_CLEARTEXT_PLUGIN` option that enables the plugin on a per-connection basis. Also, any program that uses `libmysqlclient` and reads option files can enable the plugin by including an `enable-cleartext-plugin` option in an option group read by the client library.

