mysql8.0之后的随机密码_MySQL 8.0系列——生成随机密码

MySQL 8.0.18及更高版本引入了新的功能,允许在创建和更改用户时直接生成随机密码。CREATE USER, ALTER USER和 SET PASSWORD语句现在可以自动生成复杂且长度为20个字符的随机密码。这些随机密码不受validate_password插件影响,并且在binlog中以加密形式记录。" 139057532,7572226,Python中的运算符详解:逻辑、比较与位运算,"['Python', '运算符', '逻辑运算符', '位运算符']
摘要由CSDN通过智能技术生成

背景

从前,有一个客户,数据库高权账号的密码,要求每天自动地修改为随机密码,以增强数据库的安全性。

我们开发了一个用程序模块来实现的,当然您也可以用脚本 + cron 来实现。

现在,实现这个需求更为简单了。

8.0.18版本新增了一个小功能,CREATE USER,ALTER USER和 SET PASSWORD语句可以生成随机密码。

生成随机密码

mysql> create user 'fanderchan'@'%' IDENTIFIED BY RANDOM PASSWORD;

+------------+------+----------------------+

| user | host | generated password |

+------------+------+----------------------+

| fanderchan | % | YMeIblT.jRciKLWkB0RL |

+------------+------+----------------------+

1 row in set (0.01 sec)

mysql> ALTER USER 'fanderchan'@'%' IDENTIFIED BY RANDOM PASSWORD;

+------------+------+----------------------+

| user | host | generated password |

+------------+------+----------------------+

| fanderchan | % | !bnMk/Lu4C87VMOdXQh. |

+------------+------+----------------------+

1 row in set (0.01 sec)

mysql> SET PASSWORD FOR 'fanderchan'@'%' TO RANDOM;

+------------+------+----------------------+

| user | host | generated password |

+------------+------+----------------------+

| fanderchan | % | dCdJT5h9[Gm/dsC.aVHm |

+------------+------+----------------------+

1 row in set (0.01 sec)

可以看见默认情况下,随机密码长度为20个字符,并且具有很好的复杂度(大写字母、小写字母、特殊符号、数字)

相关参数

控制随机密码的长度

mysql> show variables like 'generated_random_password_length';

+----------------------------------+-------+

| Variable_name | Value |

+----------------------------------+-------+

| generated_random_password_length | 20 |

+----------------------------------+-------+

1 row in set (0.00 sec)

补充说明

validate_password是一个可选安装的MySQL密码增强插件,但随机密码不受validate_password插件的影响和控制

MySQL8.0 默认的密码认证插件是caching_sha2_password,MySQL5.7 默认的密码认证插件是mysql_native_password。

mysql> show global variables like 'default_authentication_plugin';

+-------------------------------+-----------------------+

| Variable_name | Value |

+-------------------------------+-----------------------+

| default_authentication_plugin | caching_sha2_password |

+-------------------------------+-----------------------+

1 row in set (0.00 sec)

所以,我在这里补充两个MySQL 8.0的授权语法和现象:

mysql> create user 'fander1'@'%' IDENTIFIED WITH 'caching_sha2_password' BY RANDOM PASSWORD;

+---------+------+----------------------+

| user | host | generated password |

+---------+------+----------------------+

| fander1 | % | Mk3UO%gi8HB6Qe>KFKxE |

+---------+------+----------------------+

1 row in set (0.01 sec)

mysql> create user 'fander2'@'%' IDENTIFIED WITH 'mysql_native_password' BY RANDOM PASSWORD;

+---------+------+----------------------+

| user | host | generated password |

+---------+------+----------------------+

| fander2 | % | Kp+t0g-3ALKeisQ>yBU/ |

+---------+------+----------------------+

1 row in set (0.00 sec)

mysql> select user,host,plugin,authentication_string from mysql.user where user like 'fander%';

+------------+------+-----------------------+------------------------------------------------------------------------+

| user | host | plugin | authentication_string |

+------------+------+-----------------------+------------------------------------------------------------------------+

| fander1 | % | caching_sha2_password | $A$005$WG[R/c]0Z8wdaalCKRoKJFNkh1owsuzQ0lsP9JSGLDHlmdGhM8DvSM1 |

| fander2 | % | mysql_native_password | *8DADAA12E42653774E3CB670F92E0A58171FE2E8 |

+------------+------+-----------------------+------------------------------------------------------------------------+

5 rows in set (0.00 sec)

我想表达的是,在binlog里,授权语句的密码显示为加密后的的密文密码 (authentication_string字段)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值