扩展 MySQL 8.0  / 第 4 章 MySQL 插件 API  / 4.4 编写插件  / 4.4.9 编写认证插件  /  6.4.1.2 旧的原生可插拔认证

6.4.1.2 旧的原生可插拔认证

MySQL 包含两个实现本机身份验证的插件;也就是说,基于可插入身份验证引入之前使用的密码哈希方法的身份验证。本节介绍,它使用较旧的(4.1 之前的)本机密码哈希方法mysql_old_password对系统表实施身份验证 。mysql.user有关 mysql_native_password使用本机密码哈希方法实现身份验证的信息,请参阅 第 6.4.1.1 节,“本机可插入身份验证”。有关这些密码散列方法的信息,请参阅 第 6.1.2.4 节,“MySQL 中的密码散列”

笔记

使用 pre-4.1 哈希方法的密码不如使用本机密码哈希方法的密码安全,应避免使用。4.1 之前的密码已弃用;期望在未来的 MySQL 版本中删除对它们的支持。有关帐户升级说明,请参阅 第 6.4.1.3 节,“从 4.1 版之前的密码哈希和 mysql_old_password 插件迁移”

下表显示了服务器端和客户端的插件名称。

表 6.9 旧本机密码身份验证的插件和库名称

插件或文件 插件或文件名
服务器端插件 mysql_old_password
客户端插件 mysql_old_password
库文件 无(内置插件)

以下部分提供特定于旧的本机可插入身份验证的安装和使用信息:

有关 MySQL 中可插入身份验证的一般信息,请参阅第 6.2.11 节,“可插入身份验证”

安装旧的本机可插入身份验证

mysql_old_password插件以服务器和客户端形式存在:

  • 服务器端插件内置于服务器中,无需显式加载,也无法通过卸载来禁用。

  • 客户端插件内置于 libmysqlclient客户端库中,可用于链接到 libmysqlclient.

使用旧的本机可插入身份验证

MySQL 客户端程序可以使用该 --default-auth选项指定mysql_old_password插件,作为程序可以使用哪个客户端插件的提示:

$> mysql --default-auth=mysql_old_password ...

如果帐户行未指定插件名称,则服务器使用 mysql_native_passwordmysql_old_password插件对帐户进行身份验证,具体取决于 Password列中的密码哈希值是使用本机哈希还是旧的 4.1 之前的哈希方法。客户必须匹配Password帐户行列中的密码。