As of MySQL 5.5.10, a client-side authentication plugin is available that sends the password to the server without hashing or encryption. This plugin is built into the MySQL client library.
The following table shows the plugin name.
Table 6.5 MySQL Cleartext Authentication Plugin
|Server-side plugin name||None, see discussion|
|Client-side plugin name|
|Library object file name||None (plugin is built in)|
With native MySQL authentication, the client performs one-way hashing on the password before sending it to the server. This enables the client to avoid sending the password in clear text. See Section 2.2.4, “Password Hashing in MySQL”. However, because the hash algorithm is one way, the original password cannot be recovered on the server side.
One-way hashing cannot be done for authentication schemes that
require the server to receive the password as entered on the
client side. In such cases, the
mysql_clear_password client-side plugin can
be used to send the password to the server in clear text. There
is no corresponding server-side plugin. Rather, the client-side
plugin can be used by any server-side plugin that needs a clear
text password. (The PAM authentication plugin is one such; see
Section 6.1.3, “The PAM Authentication Plugin”.)
For general information about pluggable authentication in MySQL, see Section 5.6, “Pluggable Authentication”.
Sending passwords in clear text 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 5.8, “Using Secure Connections”), IPsec, or a private network.
As of MySQL 5.5.27, to make inadvertent use of this plugin less likely, it is required that clients explicitly enable it. This can be done several ways:
LIBMYSQL_ENABLE_CLEARTEXT_PLUGINenvironment variable to a value that begins with
y. This enables the plugin for all client connections.
The mysql, mysqladmin, and mysqlslap client programs support an
--enable-cleartext-pluginoption that enables the plugin on a per-invocation basis.
mysql_options()C API function supports a
MYSQL_ENABLE_CLEARTEXT_PLUGINoption that enables the plugin on a per-connection basis. Also, any program that uses
libmysqlclientand reads option files can enable the plugin by including an
enable-cleartext-pluginoption in an option group read by the client library.