目前MySQL认证插件种类有如下:
插件 |
适用版本 |
说明 |
Native Pluggable Authentication |
基于本机密码哈希方法实现身份验证 |
|
Caching SHA-2 Pluggable Authentication |
实现SHA-256身份验证(如sha256_password),但在服务器端使用缓存 |
|
SHA-256 Pluggable Authentication |
基于本机使用SHA-256密码哈希执行身份验证 |
|
Client-Side Cleartext Pluggable Authentication |
客户端身份验证插件,可以让客户端将密码以明文形式发送到服务器,而不需要哈希或加密。这个插件内置在MySQL客户端库中 |
|
PAM Pluggable Authentication |
仅支持MySQL Enterprise |
(Pluggable authentication Modules)来认证MySQL用户。外部身份验证,代理用户支持 |
Windows Pluggable Authentication |
Windows上使用本地Windows服务对客户端连接进行身份验证 |
|
LDAP Pluggable Authentication |
仅支持MySQL Enterprise |
使用LDAP(轻量级目录访问协议)通过访问目录服务(如X.500)来认证MySQL用户 |
Kerberos Pluggable Authentication |
仅支持MySQL Enterprise |
使用Kerberos进行身份验证。MySQL 8.0.26及更高版本中可用windows和linux环境 |
No-Login Pluggable Authentication |
mysql_no_login服务器端身份验证插件阻止所有客户端连接到任何使用它的帐户 |
|
Socket Peer-Credential Pluggable Authentication |
服务器端auth_socket身份验证插件对通过Unix套接字文件从本地主机连接的客户机进行身份验证 |
|
FIDO Pluggable Authentication |
仅支持MySQL Enterprise |
MySQL 8.0.27及更高版本中可用,FIDO身份验证允许使用智能卡、安全密钥和生物识别阅读器等设备进行身份验证 |
Test Pluggable Authentication |
MySQL包含一个测试插件,用于检查帐户凭据,并将成功或失败记录到服务器错误日志中。 |
Client-Side Cleartext Pluggable Authentication
提供了一个客户端身份验证插件,使客户端能够将密码以明文形式发送到服务器,而无需哈希或加密。此插件内置于MySQL客户端库中。
下表显示了插件名称。
插件和库名称
插件或文件 |
插件或文件名称 |
Server-side plugin |
None, see discussion |
Client-side plugin |
mysql_clear_password |
Library file |
None (plugins are built in) |
许多客户端身份验证插件在客户端将密码发送到服务器之前对其进行哈希或加密。这使客户端能够避免以明文形式发送密码。
对于要求服务器接收在客户端输入的密码的身份验证方案,无法进行哈希或加密。在这种情况下,使用客户端 mysql_clear_password 插件,使客户端能够将密码以明文形式发送到服务器。没有相应的服务器端插件。相反, mysql_clear_password 可以在客户端与任何需要明文密码的服务器端插件协同使用。(例如PAM和简单LDAP身份验证插件;请参阅第6.4.1.5节“PAM可插拔身份验证”和第6.4.1.7节“LDAP可插拔身份证明”。)
说明:
在某些配置中,以明文形式发送密码可能是一个安全问题。为了避免在密码可能被截获的情况下出现问题,客户端应使用保护密码的方法连接到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 插件选项来启用插件。