mysql 8.0 双密码

这篇具有很好参考价值的文章主要介绍了mysql 8.0 双密码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当需要定期修改密码,又不想影响现有连接的情况下,怎么才能做到无缝切换呢

添加新密码

ALTER USER 'appuser1'@'host1.example.com' IDENTIFIED BY 'password_b' RETAIN CURRENT PASSWORD;

废弃旧密码

ALTER USER 'appuser1'@'host1.example.com' DISCARD OLD PASSWORD;

官网介绍

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

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

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

  • 必须定期对应用程序用于连接服务器的一个或多个帐户进行凭据更改。

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

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

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

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

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

MySQL 通过保存和丢弃辅助密码的语法实现双密码功能:

  • 当您分配新的主密码时, and 语句RETAIN CURRENT PASSWORD的子句 会将帐户当前密码保存为其辅助密码。 ALTER USERSET PASSWORD

  • DISCARD OLD PASSWORDfor 子句 丢弃ALTER USER帐户辅助密码,仅保留主密码。

假设,对于前面描述的凭据更改场景, 'appuser1'@'host1.example.com'应用程序使用名为 的帐户连接到服务器,并且帐户密码将从 更改 为 。 '*password_a*'``'*password_b*'

要执行此凭据更改,请使用ALTER USER以下命令:

  1. 在不是副本的每台服务器上,建立 新的主密码,保留当前密码作为辅助密码: '*password_b*'``appuser1

    ALTER USER 'appuser1'@'host1.example.com'
      IDENTIFIED BY 'password_b'
      RETAIN CURRENT PASSWORD;
  2. 等待密码更改在整个系统中复制到所有副本。

  3. 修改使用该帐户的每个应用程序 ,以便它使用密码而 不是 来 appuser1连接到服务器 。 '*password_b*'``'*password_a*'

  4. 此时,不再需要二级密码。在每台不是副本的服务器上,丢弃辅助密码:

    ALTER USER 'appuser1'@'host1.example.com'
      DISCARD OLD PASSWORD;
  5. 将丢弃密码更改复制到所有副本后,凭证更改即完成。

RETAIN CURRENT PASSWORD子句 DISCARD OLD PASSWORD具有以下作用:

  • RETAIN CURRENT PASSWORD保留帐户当前密码作为其辅助密码,替换任何现有的辅助密码。新密码将成为主密码,但客户端可以使用该帐户使用主密码或辅助密码连接到服务器。ALTER USER (例外:如果or语句指定的新密码SET PASSWORD为空,则即使 RETAIN CURRENT PASSWORD给出了辅助密码,辅助密码也将变为空。)

  • 如果您指定RETAIN CURRENT PASSWORD 的帐户的主密码为空,则该语句将失败。

  • 如果帐户有辅助密码,并且您更改其主密码而不指定RETAIN CURRENT PASSWORD,则辅助密码保持不变。

  • 对于ALTER USER,如果您更改分配给该帐户的身份验证插件,则辅助密码将被丢弃。如果您更改身份验证插件并指定RETAIN CURRENT PASSWORD,则该语句将失败。

  • 对于ALTER USER, DISCARD OLD PASSWORD丢弃辅助密码(如果存在)。该帐户仅保留其主密码,客户端只能使用该帐户通过主密码连接到服务器。

修改辅助密码的语句需要以下权限:

  • 需要有权限 APPLICATION_PASSWORD_ADMIN 才能将RETAIN CURRENT PASSWORDorDISCARD OLD PASSWORD子句用于适用于您自己的帐户的ALTER USER和语句。SET PASSWORD操作您自己的二级密码需要该权限,因为大多数用户只需要一个密码。

  • 如果要允许某个帐户操纵所有帐户的辅助密码,则应授予该帐户该 CREATE USER权限而不是 APPLICATION_PASSWORD_ADMIN.文章来源地址https://www.toymoban.com/news/detail-803235.html

到了这里,关于mysql 8.0 双密码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows修改MySQL数据库密码(修改或忘记密码)  

    今天练习远程访问数据库时,为了方便访问,就想着把数据库密码改为统一的,以后我们也会经常遇到MySQL需要修改密码的情况,比如密码太简单、忘记密码等等。在这里我就借鉴其他人的方法总结几种修改MySQL密码的方法。 我就以实际操作修改root密码为例,操作系统为win

    2024年02月09日
    浏览(64)
  • Windows修改MySQL数据库密码(修改或忘记密码)

    今天练习远程访问数据库时,为了方便访问,就想着把数据库密码改为统一的,以后我们也会经常遇到MySQL需要修改密码的情况,比如密码太简单、忘记密码等等。在这里我就借鉴其他人的方法总结几种修改MySQL密码的方法。 我就以实际操作修改root密码为例,操作系统为win

    2024年02月08日
    浏览(61)
  • mysql数据库root密码遗忘后,修改root密码

    目录 方式一: 方式二: 2.1 也可以像我这样,普通用户登录进去后 2.2 执行如下命令,将已知的user1的加密密文更新到root中 2.3 查询数据库 2.4 用root用户登录 2.5 登录正常,但这会root登录进去后,无法执行具体的sql,只要有操作,会报如下的错: 2.6 需要重新ALTRE下用户信息

    2024年02月12日
    浏览(51)
  • MySQL数据库修改root账户密码

    博主今天登录数据库遇到了一个问题,通过这篇文章(http://t.csdn.cn/58ECT)解决了。文中关于修改root账户密码的部分,博主觉得有必要写一篇文章总结下。 我的是在D盘下,操作时可以一步步来,用CMD的cd(切换目录)+tab(提示文件名),逐步切换到目标目录下。需要注意的是

    2024年02月06日
    浏览(48)
  • mysql数据库忘记密码了怎么办

    本人用的mysql8版本 看到网上很多教程,什么修改配置文件my.ini。在8版本根本没用。以下是8版本解决办法。亲测可用。 1、用管理员身份打开命令行工具。(强调:管理员身份) 2、停止mysql服务: 3、输入以下命令无密码启动mysql 4、 另开一个命令行窗口,输入mysql -u root无密

    2024年02月11日
    浏览(44)
  • Mysql数据库--修改root密码的几种方法(忘记密码&知道密码)

    🍁 通过 alter user root identified by \\\'新密码\\\'; 🍁 通过 set password for 用户名@\\\'用户地址\\\' = \\\'新密码\\\'; 2.1.1 🎈 停止mysql服务 2.1.2 🎈 创建mysql-init-file.txt文件 2.1.3 🎈 init-file的权限(最好赋权一下) 2.1.3 🎈 使用–init-file选项启动mysql服务 2.1.4 🎈 新密码连接测试(密码:Zyl@123321)

    2024年02月08日
    浏览(78)
  • 忘记密码不用愁【linux下 MySQL数据库忘记密码解决方案】

    前言 : 在日常的开发中我们有可能忘记了我们自己设置的密码,譬如说Mysql数据库的密码,不过不要担心,小编整理了2个方法带给大家。 查看初始化密码进行登录: 查看mysql的初始密码 在root@localhost后面的就是mysql初始的密码,以上图为例 初始密码则为:ukehBfivW1 直接跳过

    2024年02月10日
    浏览(54)
  • MySQL数据库忘记密码怎么办?教你一招

    文章目录 1.以管理员身份打开cmd,关闭Mysql服务 2. 跳过密码授权登录  3.再继续以管理员身份打开一个cmd窗口,进行重置密码  4.使用新密码重新登录mysql验证  5.使用Navicat可视化工具连接Mysql Mysql数据库之前安装好了,但是突然忘记当初自己设置的登录密码了,导致使用Navi

    2024年02月04日
    浏览(95)
  • 修改Mysql数据库的用户名和密码【详细】

    数据库的用户名默认是root 1进入到Mysql         首先要登录数据库         1win+r输入cmd【 管理员身份打开 】或者  2搜索输入命令提示符。 2 输入 mysql -uroot -p 点击回车         注意:mysql 默认用户名是root ,我以前修改过,所以我输入了 mysql -uerp -p 回车 , 然后输

    2024年02月05日
    浏览(51)
  • 开源数据库Mysql_DBA运维实战 (修改root密码)

    本文以windows为例为大家详细介绍下MySQL修改root密码的4种方法,大家可以可以根据的自己的情况自由选择,希望对大家有所帮助 方法1: 用SET PASSWORD命令 首先登录MySQL。 格式:mysql set password for 用户名@localhost = password(‘新密码’); 例子:mysql set password for root@localhost = password

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包