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,请参阅远离4.1密码散列和MySQL_OLD_PASSWORD插件。
MySQL存储密码的方法由身份验证插件定义。旧方法使用mysql_old_password.
身份验证插件,以及当前的默认方法使用mysql_native_password.
。as mysql 5.6,aSHA256_PASSWORD.
虽然它需要SSL或加密连接,但也可以使用选项。当MySQL Workbench升级密码时,它升级mysql_old_password.
至mysql_native_password.
。有关身份验证插件的其他信息,请参阅可插拔身份验证。
选项取决于您的secure_auth选项
升级密码确实有限制。以下是两种情况:
如果是
secure_auth.
MySQL Server选项被禁用,然后你可以使用旧密码格式的用户登录,并更新用户自己的MySQL密码。但是,这在MySQL Workbench 6.3.5中不是一个选项,因为与旧密码格式的兼容性被删除了。由于这个原因,用户升级自己的密码格式的能力必须使用MySQL命令行,如下文所述远离4.1密码散列和MySQL_OLD_PASSWORD插件。笔记如果使用MySQL命令行不是一个选项,那么您可以使用MySQL工作台的一个旧版本(版本6.3.4和更早),它允许您启用使用旧的认证协议选择下的选择先进的连接选项卡。旧版本的MySQL工作台可用https://10bet手机中文版downloads.10bet靠谱mysql.com/Archives/Workbench/。
如前所述,
secure_auth.
在MySQL 5.6中默认启用,并且在MySQL 5.7中始终启用。如果
secure_auth.
已启用,如果您的用户的密码以旧格式存储,则无法登录。尝试将失败并发出类似于“错误2049(HY000):使用旧(4.1.1前)的连接拒绝身份验证协议(客户端选项'secure_auth'已启用)”。如果要升级密码,可以禁用secure_auth.
(不推荐)然后按照上面的描述进行更新,或者作为不同的特权用户(如root)登录,以更改不同用户的密码。
使用MySQL Workbench升级密码
记住上面的内容,有两种方法可以使用MySQL Workbench更新密码。
打开用户和权限来自管理导航器的选项卡。选择要从中更新的用户帐户用户帐户部分。如果使用旧的密码格式,你会在屏幕右下角看到以"This account is using the pre-mysql-4.1.1 password hash type."开头的文本,还有一个大的 右侧的按钮。从这里,你可以:
所有MySQL版本的选项:
手动输入新密码或当前密码,然后单击
。这将密码升级到更新的密码格式,MySQL用户现在可以使用您定义的新密码登录。mysql 5.6及更高版本的选项:
而不是编辑密码字段,而不是单独留下它并立即点击
。从这里,您可以生成一个随机密码,并通过单击将其标记为过期 。使用此临时随机密码来登录用户,MySQL将在用户首次登录时提示新密码。
以下附图证明了两种方法中使用的步骤顺序:
重置为随机密码时,必须保存密码并将其提供给用户。您将在新的popup窗口中找到类似于下图的随机密码。
完成升级后,请注意新的身份验证类型连接。在下一个图中所示的示例中,该值改变了标准(旧)至标准。换句话说,身份验证类型从mysql_old_password.
至mysql_native_password.
。