#### 6.4.1.4客户端明文可插入身份验证

[](<>)[](<>)

有一个客户端身份验证插件可供使用，它使客户端能够以明文形式向服务器发送密码，而无需哈希或加密。该插件内置于MySQL客户端库中。

下表显示了插件名称。

[](<>)

**表6.18用于明文认证的插件和库名称**

| 插件或文件 | 插件或文件名 |
| ----- | ------ |
| 服务器端插件 | 无，请参阅讨论 |
| 客户端插件 | `mysql\u清除\u密码` |
| 库文件 | 无（插件内置） |

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

对于要求服务器接收在客户端输入的密码的身份验证方案，无法进行哈希或加密。在这种情况下，客户端`mysql\u清除\u密码`使用插件，这使客户端能够将密码以明文形式发送到服务器。没有相应的服务器端插件。相当地`mysql\u清除\u密码`可以在客户端与任何需要明文密码的服务器端插件配合使用。（示例是PAM和简单LDAP身份验证插件；请参阅[第6.4.1.5节，“PAM可插拔认证”](pam-pluggable-authentication.html)和[第6.4.1.7节，“LDAP可插拔身份验证”](ldap-pluggable-authentication.html).)

下面的讨论提供了特定于明文可插入身份验证的使用信息。有关MySQL中可插入身份验证的一般信息，请参阅[第6.2.17节，“可插拔认证”](pluggable-authentication.html).

笔记

在某些配置中，以明文形式发送密码可能是一个安全问题。为了避免密码被截获时出现问题，客户端应该使用保护密码的方法连接到MySQL服务器。可能包括SSL（参见[第6.3节，“使用加密连接”](encrypted-connections.html))、IPsec或专用网络。

无意中使用`mysql\u清除\u密码`插件不太可能，MySQL客户端必须显式启用它。这可以通过几种方式实现：

-   设定`LIBMYSQL_启用_明文_插件`将环境变量设置为以开头的值`1.`, `Y`或`y`。这将为所有客户端连接启用插件。

-   这个[**mysql**](mysql.html), [**mysqladmin**](mysqladmin.html), [**mysqlcheck**](mysqlcheck.html), [**mysqldump**](mysqldump.html), [**mysqlshow**](mysqlshow.html)和[**mysqlslap**](mysqlslap.html)客户端程序支持`--启用明文插件`选项，在每次调用的基础上启用插件。

-   这个[`mysql_选项（）`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-options.html)C API函数支持`MYSQL_启用_明文_插件`选项，在每个连接的基础上启用插件。还有，任何使用`libmysqlclient`读取选项文件可以通过包含`启用明文插件`由客户端库读取的选项组中的选项。
