客户端明文可插入身份验证
提供了客户端身份验证插件,使客户端可以将密码以明文形式发送到服务器,而无需哈希或加密。该插件内置在MySQL客户端库中。
下表显示了插件名称。
表6.15用于明文身份验证的插件和库名称
插件或文件 | 插件或文件名 |
---|---|
服务器端插件 | 无,请参见讨论 |
客户端插件 | mysql_clear_password |
库文件 | 无(内置插件) |
许多客户端身份验证插件会在客户端将密码发送到服务器之前执行密码的哈希处理或加密。这使客户端可以避免以明文形式发送密码。
对于要求服务器接收客户端输入的密码的身份验证方案,无法进行哈希或加密。在这种情况下,将使用客户端mysql_clear_password
插件,该插件使客户端能够将密码以明文形式发送到服务器。没有相应的服务器端插件。而是mysql_clear_password
可以与需要明文密码的任何服务器端插件一起在客户端上使用。(示例是PAM和简单的LDAP身份验证插件;请参见“ PAM可插拔身份验证”和“ LDAP可插拔身份验证”。)
以下讨论提供了特定于明文可插入身份验证的使用信息。有关MySQL中的可插入身份验证的一般信息,
注意在某些配置中,以明文形式发送密码可能是一个安全问题。为了避免在可能被截获密码时出现问题,客户端应使用保护密码的方法连接到MySQL Server。可能包括SSL(请参见“使用加密的连接”),IPsec或专用网络。
为了减少偶然使用该mysql_clear_password
插件的可能性,MySQL客户端必须显式启用它。这可以通过几种方式完成:
- 在设置
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN
环境变量,且开头的值1
,Y
或y
。这将为所有客户端连接启用插件。 - 在MySQL的,中mysqladmin,mysqlcheck的,mysqldump的,mysqlshow和mysqlslap客户端程序支持
--enable-cleartext-plugin
,允许在每调用基础的插件选项。 mysql_options()
C API函数支持MYSQL_ENABLE_CLEARTEXT_PLUGIN
选项,使在每个连接的基础插件。同样,使用libmysqlclient
和读取选项文件的任何程序都可以enable-cleartext-plugin
通过在客户端库读取的选项组中包含一个选项来启用该插件。