当前位置: 首页 > news >正文

MySQL8.X 双密码机制:解决应用程序用户不停机修改密码问题

在数据库管理中,定期更新密码是确保系统安全的重要手段。然而,如何在不影响现有连接的情况下平滑地切换密码,避免系统停机,始终是一个挑战。MySQL 8.0 引入的“双密码”机制为这种需求提供了有效的解决方案,使得密码更新过程能够无缝进行。

MySQL8.0双密码特性

自 MySQL 8.0.14 版本起,MySQL 支持为每个用户账户设置两个密码:主密码(新密码)和辅助密码(旧密码)。这种双密码机制能够在一些复杂的系统中,特别是当涉及大量 MySQL 实例、复制、多个应用程序连接以及频繁的密码更新时,保持服务不中断,从而实现更流畅的密码更改流程。

下面是详细操作和解说:

/* * 检查账号情况 * 如果账户不存在或者当前密码为空 无法保留旧密码 * 确保目标账户的 authentication_string 非空, * 如果账户当前没有密码,执行 RETAIN CURRENT PASSWORD 会直接报错 ERROR 3031 */ -- 查询账号情况 SELECT * FROM mysql.user WHERE user='user'; /* * 该命令会将 new_password 设置为主密码,并将旧密码保留为辅助密码。 * 此时,无论是使用新密码还是旧密码的客户端,都能正常连接到数据库。 */ -- 设置新密码并保留旧密码 (RETAIN CURRENT PASSWORD) ALTER USER 'user'@'host' IDENTIFIED BY 'new_password' RETAIN CURRENT PASSWORD; /* * 请在此阶段完成应用端配置更新与连接池刷新 * */ -- 下面查询可以检查账号连接进程 SELECT * FROM performance_schema.threads WHERE PROCESSLIST_USER='user'; /* * 该命令会丢弃辅助密码(原密码),使得数据库仅接受主密码(新密码) * 此时,客户端只能使用主密码进行连接,旧密码(辅助密码)将不再有效。 */ -- 彻底清理旧密码 (DISCARD OLD PASSWORD) ALTER USER 'user'@'host' DISCARD OLD PASSWORD;

其他注意事项:

1.严格的前置校验:先检查mysql.user表,确保目标账户的authentication_string非空。如果账户当前没有密码,执行RETAIN CURRENT PASSWORD会直接报错ERROR 3031

2.主从同步阻塞等待:双密码状态变更会通过 Binlog 同步到从库。如果主库执行完但部分从库尚未同步,连接从库的应用可能会随机遇到 Access denied。所以可以观察从库Seconds_Behind_Master = 0 就代表成功更新。

3.绝对禁止使用SET PASSWORD:全程使用ALTER USER。如果在外部运维系统中误用了SET PASSWORD FOR 'user'@'host' = 'new',它会直接覆盖主密码并清空辅助密码,导致旧连接瞬间失效。

4.不可逆的收尾操作:DISCARD OLD PASSWORD是不可逆的,一旦执行,旧密码彻底删除且无法回滚。

5.权限问题:执行该脚本的数据库用户需要具备ALTER USER权限,如果是非 root 用户,还需要拥有APPLICATION PASSWORD ADMIN动态权限。

总结:MySQL 8.0 的双密码机制为数据库管理员提供了一个无缝过渡的方式,使得密码更新过程可以分阶段进行,避免了传统方式中可能造成的停机和连接中断问题。通过这种机制,DBA可以在不影响系统可用性的前提下,安全地执行密码更新操作。

http://www.jsqmd.com/news/1204463/

相关文章:

  • 3DSident终极指南:深度解析任天堂3DS系统检测工具的技术架构与应用场景
  • VLA模型:具身智能的端到端动作理解范式
  • 2026年7月汽车擦车巾/汽车抛光打蜡毛巾行业热门厂家_宁波雅康家居用品有限公司 - 品牌宣传支持者
  • Windows 注册表实战:不改默认打开方式,只为 .bat 绑定 Zed 编辑器
  • C++ DLL封装实战:从原理到避坑的完整指南
  • Python单元测试Mock实战:pytest-mock五大高频场景解析
  • OpenClaw+飞书+千问智能办公体系稳定性实战指南
  • Jupyter Notebook与Python:AI算法入门最佳实践
  • iOS 14-16.6.1设备一键安装TrollStore:TrollInstallerX终极使用指南
  • kotlin数组操作
  • C++类与对象进阶:从构造析构到多态,掌握面向对象核心
  • vue 自定义模块内容
  • 泰格豪雅中国官方售后服务中心|服务电话及全部网点地址权威信息通告(2026年7月最新) - 亨得利官方服务中心
  • 候选路径生成:替代端到端轨迹预测的新范式
  • 扩散模型数学原理
  • 2026 年新发布:营口热门的双轴粉尘加湿机公司联系方式,别再买湿器了!双轴粉尘加湿机如何颠覆你的空气质量? - 企业官方推荐【认证】
  • Qwen3.5 27B大模型本地部署与开发实战指南
  • GraspVLA:视觉-语言-动作联合建模实现零样本灵巧抓取
  • AI技能全生命周期管理工具SkillNexus解析
  • 2026年7月网站建设/小程序定制开发专业团队推荐_亳州玖晟网络科技有限公司 - 行业平台推荐
  • BEAVR:基于VR的双手遥操作范式与实时具身映射架构
  • C++内存泄漏防治:从RAII到智能指针的五大实战策略
  • 如何通过yuzu模拟器实现Switch游戏的高性能跨平台运行
  • C++实现TOPSIS算法:高性能多准则决策分析实战指南
  • VLA与世界模型不是对手,而是物理AI的左右脑
  • Windows 11/10数据迁移工具使用指南与技巧
  • Windows Server 2022 AD域控服务器搭建与优化指南
  • 匠选:广东服务不错的轻养生精油ODM厂家 - 品牌推广大师
  • 2026年7月宁波小辫子布/汽车内饰毛巾工厂推荐盘点_宁波雅康家居用品有限公司 - 行业平台推荐
  • 劳力士中国官方售后服务中心|全部网点地址及24小时热线权威信息通告(2026年7月最新) - 劳力士服务中心