6.4.1.6 Client 端明文可插入身份验证

提供了 Client 端身份验证插件,使 Client 端可以将密码以明文形式发送到服务器,而无需哈希或加密。该插件内置在 MySQLClient 端库中。

下 table 显示了插件名称。

table6.12 用于明文身份验证的插件和库名称

插件或文件插件或文件名
Server-side plugin无,请参见讨论
Client-side pluginmysql_clear_password
Library file无(内置插件)

许多 Client 端身份验证插件会在 Client 端将密码发送到服务器之前执行密码的哈希处理或加密。这使 Client 端可以避免以明文形式发送密码。

对于要求服务器接收 Client 端 Importing 的密码的身份验证方案,无法进行哈希或加密。在这种情况下,将使用 Client 端mysql_clear_password插件,该插件使 Client 端能够将密码以明文形式发送到服务器。没有相应的服务器端插件。而是,mysql_clear_password可以与需要明文密码的任何服务器端插件一起在 Client 端使用。 (示例是 PAM 和简单的 LDAP 身份验证插件;请参阅第 6.4.1.7 节“ PAM 可插入身份验证”第 6.4.1.9 节“ LDAP 可插拔身份验证”。)

以下讨论提供了特定于明文可插入身份验证的使用信息。有关 MySQL 中可插拔身份验证的一般信息,请参见第 6.2.13 节“可插入身份验证”

Note

在某些配置中,以明文形式发送密码可能是一个安全问题。为了避免可能被截获密码的问题,Client 端应使用保护密码的方法连接到 MySQL Server。可能包括 SSL(请参阅第 6.3 节“使用加密的连接”),IPsec 或专用网络。

为了减少意外使用mysql_clear_password插件的可能性,MySQLClient 端必须显式启用它。这可以通过几种方式完成:

  • LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN环境变量设置为以1Yy开头的值。这将为所有 Client 端连接启用插件。

  • mysqlmysqladminmysqlslapClient 端程序(对于 MySQL 5.7.10 及更高版本也为mysqlcheckmysqldumpmysqlshow)支持--enable-cleartext-plugin选项,该选项可基于每次调用启用插件。

  • mysql_options() C API 函数支持MYSQL_ENABLE_CLEARTEXT_PLUGIN选项,该选项可基于每个连接启用插件。同样,任何使用libmysqlclient并读取选项文件的程序都可以通过在 Client 端库读取的选项组中包含enable-cleartext-plugin选项来启用插件。