MySQL 8.0 双密码机制:实现数据库层面定期密码修改的无缝切换 ...

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

在数据库管理中,定期修改密码是保障安全的重要步伐,但如何在不影响现有连接的情况下实现无缝切换是一个关键标题。MySQL 8.0 的双密码机制为此提供了抱负的解决方案。
双密码机制简介

从 MySQL 8.0.14 开始,用户帐户答应拥有双重密码,即主密码和辅助密码。这种双密码功能在多种复杂场景中具有显著上风,特别是当系统存在大量 MySQL 服务器(大概涉及复制)、多个应用步伐连接差异 MySQL 服务器且需要定期更改根据的情况。
双密码机制的工作原理

1. 添加新密码与保存旧密码

当需要更改密码时,可使用以下语句添加新密码并保存当前密码作为辅助密码:
  1. ALTER USER 'root'@'%' IDENTIFIED BY '123123' RETAIN CURRENT PASSWORD;
复制代码
此操纵将新指定的密码(‘123123’)设为主密码,同时保存当前密码(123456)作为辅助密码。这样,服务器能够辨认主密码和辅助密码,而应用步伐仍可使用原密码(现为辅助密码)继续连接服务器。

进行测试:

在这里大家可以看到两个密码都可以正常登录。
2. 废弃旧密码

当新密码在系统中流传且应用步伐完成更新后,可废弃辅助密码:
  1. ALTER USER 'root'@'%' DISCARD OLD PASSWORD;
复制代码
此时,账户仅保存主密码,客户端只能通过主密码连接服务器,完成密码更新。

进行测试:

在这里我们可以看到新密码正常登录,旧密码登录失败。
双密码机制在复杂场景中的上风

1. 避免停机时间

在传统的单密码模式下,当一个系统有大量服务器和应用步伐时,更改密码需要密切和谐服务器密码更新和应用步伐使用新密码的时间,这大概导致服务器或应用步伐出现停机情况。而双密码机制答应分阶段进行凭证更改,无需停机。
比方,在有多个 MySQL 服务器(包罗副本)且多个应用步伐连接的系统中,对于名为 ‘ceshi’@‘%’ 的账户,从密码 ‘123456’ 更改为 ‘123123’ 的过程如下:


  • 在每台非副本服务器上,先执行以下命令建立新主密码并保存当前密码为辅助密码:
  1. ALTER USER 'ceshi'@'%' IDENTIFIED BY '123123' RETAIN CURRENT PASSWORD;
复制代码

进行测试:



  • 等待密码更改在整个系统(包罗全部副本)中复制完成。
  • 修改使用该账户的每个应用步伐,使其使用新密码 ‘123123’ 连接服务器。
  • 在每台非副本服务器上抛弃辅助密码:
  1. ALTER USER 'ceshi'@'%'  DISCARD OLD PASSWORD;
复制代码


  • 将抛弃辅助密码的更改复制到全部副本后,密码更新完成,整个过程无需停机。

2. 灵活的密码管理



  • RETAIN CURRENT PASSWORD 子句作用
    此子句保存账户当前密码作为辅助密码,替换任何现有的辅助密码。新指定的密码成为主密码,客户端可以使用主密码或辅助密码连接服务器。不过需要留意,如果 ALTER USER 或 SET PASSWORD 语句指定的新密码为空,即使使用了 RETAIN CURRENT PASSWORD,辅助密码也将变为空。并且,如果指定 RETAIN CURRENT PASSWORD 的账户主密码为空,该语句将失败。如果账户有辅助密码,更改主密码时不指定 RETAIN CURRENT PASSWORD,则辅助密码保持不变。此外,对于 ALTER USER,如果更改账户的身份验证插件,则辅助密码将被抛弃;若同时指定 RETAIN CURRENT PASSWORD,则该语句将失败。
  • DISCARD OLD PASSWORD 子句作用
    此子句用于抛弃辅助密码(如果存在),账户仅保存主密码,客户端只能使用主密码连接服务器。
双密码管理的权限要求

修改辅助密码相关的语句需要特定权限。若要对本身的账户使用 RETAIN CURRENT PASSWORD 或 DISCARD OLD PASSWORD 子句进行 ALTER USER 和 SET PASSWORD 操纵,需要 APPLICATION_PASSWORD_ADMIN 权限。大多数用户只需要操纵本身的一个密码,但如果要答应某个账户利用全部账户的辅助密码,则应授予该账户 CREATE USER 权限,而不是 APPLICATION_PASSWORD_ADMIN 权限。
通过合理利用 MySQL 8.0 的双密码机制及其相关特性,可以在定期修改密码时,轻松实现无缝切换,同时保障系统的持续可用性和安全性。
总结

虽然MySQL8双策略可以实现数据库层面的无缝切换,但是对于某些特定的应用来说,修改数据库的密码后,他们还得重新去打包修改新密码,对业务也是有一定影响的。
欢迎关注公众号《小周的数据库进阶之路》,更多出色知识和干货尽在此中。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表