6.4.1.6 Client 端明文可插入身份验证
提供了 Client 端身份验证插件,使 Client 端可以将密码以明文形式发送到服务器,而无需哈希或加密。该插件内置在 MySQLClient 端库中。
下 table 显示了插件名称。
table6.12 用于明文身份验证的插件和库名称
插件或文件 | 插件或文件名 |
---|---|
Server-side plugin | 无,请参见讨论 |
Client-side plugin | mysql_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
环境变量设置为以1
,Y
或y
开头的值。这将为所有 Client 端连接启用插件。 -
mysql,mysqladmin和mysqlslapClient 端程序(对于 MySQL 5.7.10 及更高版本也为mysqlcheck,mysqldump和mysqlshow)支持
--enable-cleartext-plugin
选项,该选项可基于每次调用启用插件。 -
mysql_options() C API 函数支持
MYSQL_ENABLE_CLEARTEXT_PLUGIN
选项,该选项可基于每个连接启用插件。同样,任何使用libmysqlclient
并读取选项文件的程序都可以通过在 Client 端库读取的选项组中包含enable-cleartext-plugin
选项来启用插件。