双重密码,MySQL8.0 创新特性

MySQL 8.0引入了双重密码特性,允许账户拥有主密码和备密码,使得在线上DB变更时能不停机修改密码,避免应用程序因密码变更而中断。这一特性在数据库领域具有创新意义,通过实验验证了在MySQL 8.0中修改密码不会导致连接失败,而在MySQL 5.7中则会出现连接错误。
摘要由CSDN通过智能技术生成

MySQL 8.0新特性专栏目录

《MySQL开发规范》过时了,视图查询性能提升了一万倍
你真的会用EXPLAIN么,SQL性能优化王者晋级之路
索引三剑客之降序索引和不可见索引
千呼万唤始出来,MySQL 8.0索引三剑客之函数索引
双重密码,MySQL 8.0创新特性
sql_mode兼容性,MySQL 8.0 升级踩过的坑
警惕参数变化,MySQL 8.0 升级避免再次踩坑



前言:

MySQL 8.0 引入了很多令人振奋的新特性,跟账户认证相关的新特性包括:新增caching_sha2_password身份认证插件,支持角色,区分系统账户和普通账户,维护密码历史信息限制重复使用以前的密码和密码过期等,双重密码,生成随机密码,登录失败跟踪和临时锁定账户。

MySQL 8.0 最令人眼前一亮的特性:双重密码。这个特性在数据库领域应该也是第一次引入,为线上DB变更带来了极大的便利。


1. 双重密码 Dual Password

MySQL 8.0.14之后,账户允许拥有双重密码,一个主密码,一个备密码。客户端通过主密码或者备密码都可以正常连接到数据库,这个特性为我们线上DB的账户变更带来了极大的便利。即使在使用大量服务器或多个应用程序连接到不同 MySQL服务器的情况下,也可以无缝地执行数据库账户密码更改,而不影响业务连续性。在此之前,数据库账户只允许有一个密码,修改数据库账户密码之后,如果应用程序仍然以旧密码连接MySQL数据库,应用程序会一直报错。双重密码的出现完美地解决了这个问题。

1.1 适用场景

适用场景

  • 同一个服务使用相同账户密码连接了多个不同的数据库实例,其中某个数据库实例需要修改密码,修改密码前后服务访问不中断。
  • 多个不同服务使用相同账户密码连接了同一个数据库实例,其中某个服务需要修改数据库账户密码,修改密码前后服务访问不中断。

1.2 不停机修改数据库账户密码的具体过程

  1. 对于要更改的账户,建立一个新的主密码,原密码作为备密码。此时,MySQL
    Server会同时承认主密码和备密码,所有应用都可以继续用老的密码连进来。
  2. 一旦在数据库完成更新密码,应用可以使用新的密码连进来。
  3. 等所有应用迁移到新的主密码,备密码就可以去掉了(discard)。一旦被discard,就只能用新的密码连接数据库。

1.3 对比验证不停机修改密码(MySQL 8.0 vs MySQL 5.7)

验证一下MySQL8.0双重密码的功效。作为对比,使用同一段python小程序分别循环连接MySQL 8.0 和 MySQL 5.7实例,期间修改数据库密码,查看程序是否报错。

测试连接程序:mysql_connection.py

# -*- code: utf-8 -*-
'''
连接mysql操作数据库
'''
import pymysql
import time

class MysqlOperate
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值