MySQL可以通过使用不同的插件进行多种认证方式,这些插件可以是内置的,也可以是来自于外部。默认的服务器端插件是内置的,包括“cachine_sha2_password”、“sha256_password”、“mysql_native_password”,“cachine_sha2_password”是MySQL8.0开始的默认插件,其他两种未来将做降级弃用处理。
MySQL服务器端“auth_socket”插件对通过Unix socket文件从本地主机连接的客户端进行身份验证。插件使用“SO_PEERCRED”套接字选项来获取有关运行客户端程序的用户的信息。因此,这个插件只能在支持“SO_PEERCRED”选项的系统上使用。
MySQL客户端库的库中内置了“mysql_clear_password”插件,该插件用于客户端发送明文密码,在一些认证方法里,例如,PAM或LDAP认证,要求客户端发送明文密码到服务器,以便服务器能以正常的格式处理这些密码。启用该插件,需要设置“LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN”环境变量,并在运行客户端时指定“--enable-cleartext-plugin”。
MySQL包含一个测试插件,用于检查帐户凭据并将成功或失败记录到服务器错误日志中。该插件不是内置插件,必须在使用前安装。插件使用“auth_test_plugin.so”文件。
MySQL还包含一个No-login插件,“mysql_no_login”服务器端身份验证插件阻止所有客户端连接到使用它的任何帐户。使用该插件能够使得账户提升权限执行存储的程序和视图,而不会将这些权限暴露给普通用户。还可以禁止账户直接登录,只允许通过代理帐户访问。
此外,在MySQL的企业版中,提供了PAM、LDAP、Windows 认证、Kerberos、FIDO等插件。
- PAM:在Linux和MacOS上提供,通过一个标准接口访问多种认证方法,例如传统的Unix密码或LDAP目录。
- LDAP:通过目录服务认证mysql用户,例如, X.500。MySQL通过LDAP 找回用户、凭据,及组信息。
- Windows认证:支持在Windows上执行外部认证的认证方法,使MySQL Server能够使用本地Windows服务对客户端连接进行认证。登录Windows的用户可以根据其环境中的信息从MySQL客户端程序连接到服务器,而无需指定额外的密码。
- Kerbeors:该方法允许用户在可以获得适当的Kerberos票据时,使用Kerberos对MySQL Server进行身份验证。
- FIDO:允许用户使用FIDO身份验证到MySQL服务器。FIDO代表快速在线身份,它提供了不需要使用密码的身份验证标准。允许使用智能卡、安全密钥和生物识别阅读器等设备对MySQL服务器进行身份验证。由于可以通过提供密码以外的方式进行身份验证,因此FIDO支持无密码身份验证。对于使用多因素身份验证的MySQL帐户,可以使用FIDO身份验证,效果很好。