MySQL双重密码是如何工作的
2022-11-28 17:23 abce 阅读(66) 评论(0) 编辑 收藏 举报假设先创建了一个用户:
MySQL> create user abce@'%' identified by 'abce'; Query OK, 0 rows affected (0.01 sec) MySQL> grant all on abce.* to abce@'%'; Query OK, 0 rows affected (0.00 sec) MySQL>select user,host, plugin, authentication_string, password_last_changed,User_attributes from mysql.user where user = 'abce'\G *************************** 1. row *************************** user: abce host: % plugin: caching_sha2_password authentication_string: $A$005$`+ G4ZSoB@>f%ss AFPNm4zceJJXAQNT6LlpAoQWrqHFqWWcfhN10MpJ0G/6 password_last_changed: 2022-11-28 17:11:02 User_attributes: NULL 1 row in set (0.01 sec) MySQL>
至此,用户就可以连接到数据库了。
运行一段事件以后,因为安全规定,收到DBA通知要求更改密码。
现在,你可能有两种环境:
1.你有使用双重密码的权限(需要application password admin权限)
2.你没有对应的权限
如果你没有权限,则需要dba执行变更,并将新的密码告诉你。
如果你有对应的权限,你自己就可以执行修改操作。
假设你有权限,你只需要执行:
MySQL>ALTER USER abce@'%' IDENTIFIED BY 'abce2' RETAIN CURRENT PASSWORD; Query OK, 0 rows affected (0.01 sec) MySQL>
然后,检查一下:
MySQL>select user,host, plugin, authentication_string, password_last_changed,User_attributes from mysql.user where user ='abce' order by 1,2\G *************************** 1. row *************************** user: abce host: % plugin: caching_sha2_password authentication_string: $A$005$|F7&oJ uniJ2HdED3s ?dkm6C1d.IuXLfS8Od5LYo/OwRaF4v0jnCr7AyTkjRd8 password_last_changed: 2022-11-28 17:11:51 User_attributes: {"additional_password": "$A$005$`+\fG4Z\u0013SoB@>f%ss\n\u0010\u0012AFPNm4zceJJXAQNT6LlpAoQWrqHFqWWcfhN10MpJ0G/6"} 1 row in set (0.00 sec) MySQL>
可以从User_attributes看到,旧的密码已经被移除了。至此,就可以安全地滚动升级密码变更,不会影响应用和用户。
一旦切换完毕,就可以通知dba移除老的密码了,或者:
MySQL>ALTER USER 'abce'@'%' DISCARD OLD PASSWORD; Query OK, 0 rows affected (0.01 sec) MySQL>
然后,再次检查一下:
MySQL>select user,host, plugin, authentication_string, password_last_changed,User_attributes from mysql.user where user ='abce' order by 1,2\G *************************** 1. row *************************** user: abce host: % plugin: caching_sha2_password authentication_string: $A$005$|F7&oJ uniJ2HdED3s ?dkm6C1d.IuXLfS8Od5LYo/OwRaF4v0jnCr7AyTkjRd8 password_last_changed: 2022-11-28 17:11:51 User_attributes: NULL 1 row in set (0.00 sec) MySQL>