MySQL Workbench 手册  /  ...  /  更新旧的身份验证协议密码

5.3.10 更新旧的身份验证协议密码

MySQL 4.1 将密码哈希值从 16 字节扩展到 41 字节。但是,升级 MySQL 不会自动更新旧密码,因此现有密码将继续以弃用的格式存储。这是因为 MySQL 不会将密码存储为纯文本,因此重新生成密码哈希值需要用户干预。

从 MySQL 5.6 开始,相关的 secure_auth 选项默认启用。从 MySQL 5.7 开始,它始终启用,这意味着它不能被禁用。未来的 MySQL 版本将删除此选项。启用此选项后,使用旧格式定义密码的用户将无法登录到 MySQL。

综上所述,弃用的密码格式不适用于 MySQL 5.7。必须更新所有使用旧格式的密码。本节介绍如何使用 MySQL Workbench 升级这些密码。有关使用 MySQL 命令行而不是 MySQL Workbench 迁移旧密码格式的信息,请参阅 从 4.1 之前的密码哈希和 mysql_old_password 插件迁移

注意

MySQL 存储密码的方法由身份验证插件定义。旧方法使用 mysql_old_password 身份验证插件,而当前默认方法使用 mysql_native_password。从 MySQL 5.6 开始,sha256_password 选项也可用,但它需要 SSL 或加密连接。当 MySQL Workbench 升级密码时,它会将 mysql_old_password 升级到 mysql_native_password。有关身份验证插件的其他信息,请参阅 可插拔身份验证

注意

mysql_native_password 身份验证插件从 MySQL Server 8.0.34 开始弃用,从 MySQL Server 8.4.0 开始默认禁用,从 MySQL Server 9.0.0 开始移除。

MySQL Workbench 默认使用 mysql_native_password,例如,需要启用它来创建 MySQL Server 8.4 用户。在 MySQL Server 8.4 my.cnf[mysqld] 部分中包含 mysql_native_password=ON 以启用此插件。

选项取决于您的 secure_auth 选项

升级密码确实有约束。以下是两种情况:

  • 如果 secure_auth MySQL 服务器选项被禁用,则可以使用具有旧密码格式的用户登录并更新用户自己的 MySQL 密码。但是,从 MySQL Workbench 6.3.5 开始,这不是一个选项,因为与旧密码格式的兼容性已被删除。因此,用户升级其自身密码格式的能力必须使用 MySQL 命令行完成,如 从 4.1 之前的密码哈希和 mysql_old_password 插件迁移 中所述。

    注意

    如果使用 MySQL 命令行不可行,则可以使用旧版本的 MySQL Workbench(版本 6.3.4 及更早版本),它允许您在高级连接选项卡下启用使用旧的身份验证协议选项。旧版本的 MySQL Workbench 可在 https://downloads.mysql.com/archives/workbench/ 获取。

    如前所述,从 MySQL 5.6 开始,secure_auth 默认启用,从 MySQL 5.7 开始始终启用。

  • 如果 secure_auth 已启用,并且您的用户密码以旧格式存储,则您将无法登录。尝试登录将会失败,并显示类似于“错误 2049 (HY000):拒绝使用旧(4.1.1 之前)身份验证协议的连接(客户端选项 'secure_auth' 已启用)”的错误消息。要升级密码,您可以禁用 secure_auth(不推荐),然后按照上述说明进行更新,或者以其他具有特权的用户(例如 root)身份登录,以更改其他用户的密码。

使用 MySQL Workbench 更新您的密码

牢记以上内容,可以使用两种方法使用 MySQL Workbench 更新密码。

从“管理”导航器中打开“用户和权限”选项卡。从用户帐户部分中选择要更新的用户帐户。如果使用的是旧密码格式,您将在屏幕右下角看到以“此帐户使用的是 mysql-4.1.1 之前的密码哈希类型”开头的文本,并且右侧还有一个大的升级按钮。在这里,您可以:

  • 适用于所有 MySQL 版本的选项

    手动输入新密码或当前密码,然后单击升级。这会将密码升级为较新的密码格式,并且 MySQL 用户现在可以使用您定义的新密码登录。

  • 适用于 MySQL 5.6 及更高版本的选项

    不要编辑密码字段,而是保留原样并立即单击升级。在这里,您可以生成一个随机密码,并通过单击重置为已过期将其标记为已过期。使用此临时随机密码登录用户,MySQL 会在用户首次登录时提示输入新密码。

以下插图演示了两种方法中使用的步骤顺序:

图 5.24 升级旧密码:设置新密码

Content is described in the surrounding text.

图 5.25 升级旧密码:重置为随机过期密码

Content is described in the surrounding text.

重置为随机密码时,您必须保存该密码并将其提供给用户。您可以在类似于下图的新弹出窗口中找到随机密码。

图 5.26 升级旧密码:随机密码弹出窗口

Content is described in the surrounding text.

完成升级后,请注意连接的新身份验证类型。在下图所示的示例中,该值从标准(旧)更改为标准。换句话说,身份验证类型从 mysql_old_password 更改为 mysql_native_password

图 5.27 升级后的密码:标准(旧)到标准

Content is described in the surrounding text.