MySQL密码策略管理插件validate_password

小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL江湖路 | 专栏目录

  自MySQL5.6版本,引入了新密码校验插件validate_password, 用于管理用户密码长度、强度等,保障账号的安全性。而到了MySQL 8.0,引入了服务器组件(Components)这个特性,validate_password插件已用服务器组件重新实现。

一、密码策略插件validate_password用法介绍

  validate_password是MySQL默认的密码管理策略插件,可通过配置对用户密码长度、强度进行管理;

1 - 1、策略查询命令

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.00 sec)

1 - 2、属性信息介绍

属性默认值属性描述
validate_password_check_user_nameOFF设置为ON的时候表示能将密码设置成当前用户名。
validate_password_dictionary_file用于检查密码的字典文件的路径名,默认为空
validate_password_length8密码的最小长度,也就是说密码长度必须大于或等于8
validate_password_mixed_case_count1如果密码策略是中等或更强的,validate_password要求密码具有的小写和大写字符的最小数量。对于给定的这个值密码必须有那么多小写字符和那么多大写字符。
validate_password_number_count1密码必须包含的数字个数
validate_password_policyMEDIUMright-aligned 密码强度检验等级,可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。
0/LOW:只检查长度。
1/MEDIUM:检查长度、数字、大小写、特殊字符。
2/STRONG:检查长度、数字、大小写、特殊字符、字典文件。
validate_password_special_char_count1密码必须包含的特殊字符个数

1 - 3、修改方式(命令)

如下,是修改密码强度等级

SET GLOBAL validate_password_policy=LOW;     -- For LOW
SET GLOBAL validate_password_policy=MEDIUM;  -- For MEDIUM
SET GLOBAL validate_password_policy=STRONG;  -- For HIGH
-- 同等于下                            _
SET GLOBAL validate_password_policy = 0;     -- For LOW
SET GLOBAL validate_password_policy = 1;     -- For MEDIUM
SET GLOBAL validate_password_policy = 2;     -- For HIGH

MySQL密码强度等级

密码规则强度得分
Length < 40
Length ≥ 4 and < validate_password.length25
Satisfies policy 1 (LOW:只验证长度)50
Satisfies policy 2 (MEDIUM:验证长度、数字、大小写、特殊字符)75
Satisfies policy 3 (STRONG:验证长度、数字、大小写、特殊字符、字典文件)100

如下,是密码长度策略控制,代表最小长度,但最小长度为4;如果设置小于4,也会默认为4的。

SET GLOBAL validate_password_length=6;

二、首次安装MySQL后的策略配置

  通常,在我们安装完并启动MySQL后,validate_password插件就会开始运行,系统会给root用户自动生成一个随机密码,存放到日志文件mysqld.log中,用于首次登录使用。

  可通过命令获取root用户的临时密码,如下:waQ,qR%be2(5,可以用该密码进行首次登录。

# grep “password” /var/log/mysqld.log

2020-12-19T05:16:36.218234Z 1 [Note] A temporary password is generated for root@localhost: waQ,qR%be2(5

登录后系统会强制让你重置root密码,否则不允许对数据库进行操作。

mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

如果只是修改为一个简单的密码,会报以下错误:

mysql>  ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如果你想设置成“123456”这种弱口令,需要先将validate_password_policy设为LOW;这样MySQL就只检查密码长度了。

mysql> SET GLOBAL validate_password_policy=LOW;
Query OK, 0 rows affected (0.04 sec)

三、安装validate_password插件

有些版本较低或未进行全部插件安装的MySQL,会发现如下情况:

mysql> SHOW VARIABLES LIKE 'validate_password%';
Empty set (0.00 sec)

没看错,未安装~

那么请执行如下命令安装即可:

mysql> install plugin validate_password soname 'validate_password.so';
Query OK, 0 rows affected (0.17 sec)

卸载命令:

mysql> UNINSTALL PLUGIN  validate_password;
Query OK, 0 rows affected, 1 warning (0.01 sec)

安装后可通过命令 show plugins 查看已安装的MySQL插件:状态为:ACTIVE表示已激活。

mysql> show plugins;
+----------------------------+----------+--------------------+----------------------+---------+
| Name                       | Status   | Type               | Library              | License |
+----------------------------+----------+--------------------+----------------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_TEMP_TABLE_INFO     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_VIRTUAL         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL                 | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ngram                      | ACTIVE   | FTPARSER           | NULL                 | GPL     |
| validate_password          | ACTIVE   | VALIDATE PASSWORD  | validate_password.so | GPL     |
+----------------------------+----------+--------------------+----------------------+---------+
45 rows in set (0.00 sec)

附、一张有故事的照片(十四)

在这里插入图片描述


是心灵的寄托

我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:竹蜻蜓不会飞,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply

MySQL 5.6.5版本的离线安装validate_password插件需要您手动下载插件文件并将其解压到合适的目录。以下是离线安装的步骤: 1. **下载插件**: - 访问MySQL官网或者其他可靠的源找到validate_password插件,例如:https://dev.mysql.com/downloads/plugin.html?&file=/Downloads/mysql-connector-python-8.0.24-linux-x86_64.tar.gz 或者直接搜索 "mysql validate_password plugin source" 下载对应版本的tar.gz文件。 2. **解压文件**: 将下载的压缩包(如 `mysql-connector-python-8.0.24-linux-x86_64.tar.gz`)解压到您的本地计算机,通常会得到 `validate_password.so` 文件,这个就是插件文件。 3. **复制插件**: 将 `validate_password.so` 文件复制到MySQL插件目录,通常是 `/usr/lib64/mysql/plugin/` (取决于您的Linux发行版和MySQL的安装位置)。如果该目录不存在,需先创建它。 4. **配置MySQL**: 打开MySQL的配置文件(一般位于 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`),找到 `[mysqld]` 部分,在下面添加一行,指定插件路径: ``` plugin_dir = /usr/lib64/mysql/plugin/ ``` 5. **重启MySQL服务**: 通过命令行执行 `sudo service mysql restart` 或 `sudo systemctl restart mysql.service` 以加载新的插件。 6. **验证插件**: 登录MySQL服务器,运行 `SHOW PLUGINS;` 命令,应该能看到validate_password插件出现在结果中。 注意:由于MySQL5.6已经停止维护,验证密码功能在较新版本(如5.7及更高)中默认启用,离线安装validate_password插件在新版MySQL中可能不再必要。
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_陈哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值