扩展 MySQL 8.0  / 第 4 章 MySQL 插件 API  / 4.4 编写插件  / 4.4.9 编写认证插件  /  6.4.1.6 客户端明文可插入认证

6.4.1.6 客户端明文可插入认证

客户端身份验证插件可用,使客户端能够以明文形式向服务器发送密码,无需散列或加密。此插件内置于 MySQL 客户端库中。

下表显示了插件名称。

表 6.12 明文验证的插件和库名称

插件或文件 插件或文件名
服务器端插件 无,见讨论
客户端插件 mysql_clear_password
库文件 无(内置插件)

许多客户端身份验证插件在客户端将密码发送到服务器之前对密码进行散列或加密。这使客户端能够避免以明文形式发送密码。

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

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

笔记

在某些配置中,以明文形式发送密码可能是一个安全问题。如果密码有可能被拦截,为避免出现问题,客户端应使用保护密码的方法连接到 MySQL 服务器。可能的方式包括 SSL(请参阅 第 6.3 节“使用加密连接”)、IPsec 或专用网络。

为了减少无意中使用该 mysql_clear_password插件的可能性,MySQL 客户端必须明确启用它。这可以通过多种方式完成:

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

  • mysqlmysqladminmysqlslap客户端程序(还有 mysqlcheckmysqldumpmysqlshow用于 MySQL 5.7.10 及更高版本)支持在每次调用的基础上启用插件的选项--enable-cleartext-plugin

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