提供了一个客户端身份验证插件,使客户端能够将密码作为明文发送到服务器,而无需散列或加密。此插件内置在 MySQL 客户端库中。
下表显示了插件名称。
许多客户端身份验证插件在客户端将密码发送到服务器之前会对密码进行散列或加密。这使客户端能够避免以明文形式发送密码。
对于需要服务器接收在客户端输入的密码的身份验证方案,无法进行散列或加密。在这种情况下,将使用客户端 mysql_clear_password
插件,该插件使客户端能够将密码作为明文发送到服务器。没有对应的服务器端插件。相反,mysql_clear_password
可以与任何需要明文密码的服务器端插件一起在客户端使用。(例如 PAM 和简单 LDAP 身份验证插件;请参阅 第 8.4.1.5 节,“PAM 可插拔身份验证” 和 第 8.4.1.7 节,“LDAP 可插拔身份验证”。)
以下讨论提供特定于明文可插拔身份验证的使用信息。有关 MySQL 中可插拔身份验证的一般信息,请参阅 第 8.2.17 节,“可插拔身份验证”。
在某些配置中,以明文形式发送密码可能是一个安全问题。为了避免在密码可能被拦截的情况下出现问题,客户端应使用保护密码的方法连接到 MySQL 服务器。可能的方法包括 SSL(请参阅 第 8.3 节,“使用加密连接”)、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
选项来启用插件。