MySQL 工作台  / 第 5 章 MySQL Workbench 中的连接  / 5.3 管理服务器连接  /  5.3.10 更新旧的认证协议密码

5.3.10 更新旧的认证协议密码

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

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

尽管如此,已弃用的密码格式在 MySQL 5.7 中不起作用。必须更新所有使用旧格式的密码。本节介绍如何使用 MySQL Workbench 升级这些密码。有关使用 MySQL 命令行而不是 MySQL Workbench 从旧密码格式迁移的信息,请参阅从 Pre-4.1 密码散列迁移和 mysql_old_password 插件

笔记

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

选项取决于您的 secure_auth 选项

升级密码确实有限制。这里有两种情况:

  • 如果secure_auth禁用了 MySQL 服务器选项,那么您可以使用旧密码格式的用户登录并更新用户自己的 MySQL 密码。但是,从 MySQL Workbench 6.3.5 开始,这不是一个选项,因为与旧密码格式的兼容性已被删除。出于这个原因,用户升级自己的密码格式的能力必须使用 MySQL 命令行完成,如Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password Plugin中所述。

    笔记

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

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

  • 如果secure_auth启用,如果您的用户密码以旧格式存储,您将无法登录。尝试将失败并发出类似于“ ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled) ”的错误。要升级密码,您可以禁用secure_auth(不推荐)然后如上所述更新,或者以不同的特权用户(例如 root)登录以更改不同用户的密码。

使用 MySQL Workbench 升级密码

记住以上几点,有两种方法可以使用 MySQL Workbench 更新密码。

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

  • 所有 MySQL 版本的选项:

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

  • MySQL 5.6 及更高版本的选项:

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

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

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

内容在周围的文字中描述。

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

内容在周围的文字中描述。

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

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

内容在周围的文字中描述。

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

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

内容在周围的文字中描述。