前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL双密码支持的使用场景和使用示例

MySQL双密码支持的使用场景和使用示例

原创
作者头像
保持热爱奔赴山海
发布2023-10-25 10:58:55
4200
发布2023-10-25 10:58:55
举报
文章被收录于专栏:数据库相关

更全面的信息可以参考:

从 MySQL 8.0.14 开始,用户帐户允许拥有双重密码,指定为主密码和辅助密码。双密码功能使得在以下场景中无缝执行凭证更改成为可能:

一个系统有大量MySQL服务器,可能涉及到复制。

多个应用程序连接到不同的 MySQL 服务器。

必须定期对应用程序用于连接服务器的一个或多个帐户进行凭据更改【例如等保等合规要求】。

考虑在上述类型的场景中,当一个帐户只允许使用一个密码时,必须如何执行凭据更改。在这种情况下,必须在何时进行帐户密码更改并在所有服务器中传播以及何时将所有使用该帐户的应用程序更新为使用新密码的时间进行密切合作。此过程可能会涉及服务器或应用程序不可用的停机时间。

使用双密码,可以更轻松地分阶段进行凭证更改,无需密切合作,也无需停机:

对于每个受影响的帐户,在服务器上建立新的主密码,保留当前密码作为辅助密码。这使服务器能够识别每个帐户的主密码或辅助密码,而应用程序可以继续使用与以前相同的密码(现在是辅助密码)连接到服务器。

密码更改传播到所有服务器后,修改使用任何受影响帐户以使用帐户主密码进行连接的应用程序。

当所有应用程序从辅助密码迁移到主密码后,不再需要辅助密码,可以将其丢弃。此更改传播到所有服务器后,只能使用每个帐户的主密码进行连接。凭证更改现已完成。

实验

代码语言:shell
复制
[(none)]> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.32-24 |
+-----------+
1 row in set (0.00 sec)

1 创建一个业务账号

代码语言:sql
复制
[(none)]> create user app_user1@'%' identified by '123456';
Query OK, 0 rows affected (1.02 sec)


[(none)]> grant select on sbtest.* to app_user1@'%';
Query OK, 0 rows affected (0.03 sec)

2 使用app_user1账号进行db的连通性测试

代码语言:sql
复制
$ mysql -uapp_user1 -h127.0.0.1 -p123456 -e 'select id from sbtest.sbtest1 limit 1'
+----------+
| id       |
+----------+
| 10371557 |
+----------+

3 对这个业务账号 建立新的主密码,保留当前密码作为辅助密码

代码语言:sql
复制
ALTER USER app_user1@'%' IDENTIFIED BY '654321' RETAIN CURRENT PASSWORD;

4 业务系统开始分批发版,更换app_user1的密码为654321

代码语言:text
复制
在业务系统更换密码的此期间,使用新的和老的密码都可以访问数据库,并且权限也没有变化

5 随着业务系统发版,当密码全部替换成新密码后,就可以在MySQL上丢弃辅助密码(也就是老密码)

代码语言:sql
复制
ALTER USER app_user1@'%' IDENTIFIED BY '654321' DISCARD OLD PASSWORD;

注意:

代码语言:txt
复制
1 密码是否替换彻底,这个从数据库层面不好判断,需要基于代码来梳理。
代码语言:txt
复制
2 修改辅助密码的语句需要以下权限:
代码语言:txt
复制
- 需要有权限 APPLICATION_PASSWORD_ADMIN 才能将RETAIN CURRENT PASSWORDorDISCARD OLD PASSWORD子句用于适用于您自己的帐户的ALTER USER和语句。SET PASSWORD操作您自己的二级密码需要该权限,因为大多数用户只需要一个密码。
- 如果要允许某个帐户操纵所有帐户的辅助密码,则应授予该帐户该 CREATE USER权限而不是 APPLICATION\_PASSWORD_ADMIN.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档