MySQL提供了两个身份验证插件,用于对用户帐户密码实施SHA-256哈希:
sha256_password:实现基本的SHA-256身份验证。
caching_sha2_password:实现SHA-256身份验证(如sha256_password),但是在服务器端使用缓存以获得更好的性能,并具有其他功能以提高适用性。
本节介绍了缓存SHA-2身份验证插件。有关原始基本(非缓存)插件的信息,请参见第6.4.1.3节“ SHA-256可插拔身份验证”。
重要
在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是 mysql_native_password。有关此更改对服务器操作的影响以及服务器与客户端和连接器的兼容性的信息,请参阅 caching_sha2_password作为“首选身份验证插件”。
重要
要使用通过caching_sha2_password插件进行身份验证的帐户连接到服务器,必须使用支持使用RSA密钥对进行密码交换的安全连接或未加密连接,如本节稍后所述。无论哪种方式,该 caching_sha2_password插件都使用MySQL的加密功能。请参见 第6.3节“使用加密的连接”。
重要
在名称中sha256_password, “ sha256 ”是指插件用于加密的256位摘要长度。在名称中 caching_sha2_password,“ sha2 ” 更笼统地指SHA-2类加密算法,其中256位加密是其中的一个实例。后一种名称选择为将来扩展可能的摘要长度留出了空间,而无需更改插件名称。
caching_sha2_password插件有这些优势,相比于sha256_password:
1、在服务器端,内存中的高速缓存使先前连接的用户在再次连接时可以更快地重新进行身份验证。
2、不管与MySQL链接的SSL库如何,都可以使用基于RSA的密码交换。
3、提供了对使用Unix套接字文件和共享内存协议的客户端连接的支持。
下表显示了服务器端和客户端上的插件名称。
表6.13 SHA-2身份验证的插件和库名称
插件或文件 插件或文件名
服务器端插件 caching_sha2_password
客户端插件 caching_sha2_password
库文件 无(内置插件)
安装SHA-2可插入身份验证
caching_sha2_password插件以服务器和客户端形式存在:
服务器端插件内置于服务器中,无需显式加载,也无法通过卸载禁用。
客户端插件内置在 libmysqlclient客户端库中,可用于与链接的任何程序 libmysqlclient。
服务器端插件将 sha2_cache_cleaner审计插件用作帮助程序来执行密码缓存管理。 sha2_cache_cleaner,如 caching_sha2_password内置,无需安装。
使用SHA-2可插入身份验证
要设置使用caching_sha2_password插件进行SHA-256密码哈希处理的帐户,请使用 以下语句,其中 password所需的帐户密码为:
CREATE USER 'sha2user'@'