侧边栏壁纸
博主头像
与晚风述往事博主等级

万般皆下品,唯有读书高。

  • 累计撰写 149 篇文章
  • 累计创建 29 个标签
  • 累计收到 19 条评论

目 录CONTENT

文章目录

MySQL validate_password插件的使用

与晚风述往事
2021-10-09 / 0 评论 / 0 点赞 / 509 阅读 / 2,549 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-10-11,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

版本说明

建议在MySQL 8.0以下使用,因为在MySQL 8.0版本中,validate_password插件被重新实现成validate_password组件,validate_password插件已被弃用,并会在未来的版本中被删除。

介绍

validate_password(密码验证)插件的作用是通过一组系统变量来限制用户密码的强度,并且可以自定义密码策略。

validate_password(密码验证)插件不需要额外下载,MySQL发行版的插件目录lib/plugin目录中会包含它。

插件选项

validate_password插件有以下选项

  • validate-password 此选项控制validate_password插件在数据库启动时加载的方式,可选值有ON、OFF、FORCE和FORCE_PLUS_PERMANENT。
    • ON 指定插件在数据库启动时加载。
    • OFF 指定插件在数据库启动时不加载。
    • FORCE 指定插件在数据库启动时加载。如果加载失败,则数据库也不会启动。
    • FORCE_PLUS_PERMANENT 指定插件在数据库启动时加载。如果插件加载失败,则数据库不会启动。数据库和插件正常启动后,数据库不允许执行卸载它(UNINSTALL PLUGIN)。

此参数是配置在/etc/my.cnf中,主要是用于在数据库启动前配置。

插件参数

validate_password插件一共有以下参数

  • validate_password_check_user_name 校验密码是否与当前会话的用户名一致。默认值为OFF,不对密码进行校验。
  • validate_password_dictionary_file 指定校验密码使用的字典名。默认值为空,不校验密码字典。如果配置成相对路径,它会在服务器的数据目录中查找字典名。字典内容被数据库以utf8来读取,每行配置一个单词,单词为小写,最大文件大小1MB。中划线部分我不认同,在我测试后发现单词大写,最大文件大小超过1MB,数据库也会正常识别。注意,如果密码字典有变动,则需要再更改一次参数值来动态读取密码字典。
  • validate_password_length 校验密码的长度。默认值为8,最小值为0。
  • validate_password_mixed_case_count 校验密码的大写和小写字符个数。默认值为1,最小值为0。例如设置为1,则密码最小必须包含1个大写字符和1个小写字符。
  • validate_password_number_count 校验密码的数字个数。默认值为1,最小值为0。此参数的前提是validate_password_policy参数必须是MEDIUM或STRONG。
  • validate_password_policy 校验密码的策略。默认值是MEDIUM。可选的值有数字0、1、2,也有字符LOW、MEDIUM、STRONG,它们是一一对应的。
    • 0或者LOW 只能校验密码的长度是否符合要求。
    • 1或者MEDIUM 不仅可以校验密码的长度是否符合要求,还能校验密码的数字个数、小写和大写字符个数和特殊字符个数是否符合要求。
    • 2或者STRONG 除了可以校验密码的长度、数字、小写和大写字符个数和特殊字符个数是否符合要求,还可以设置使用密码字典进行校验。
  • validate_password_special_char_count 校验密码的特殊字符个数。默认值为1,最小值为0。此参数的前提是validate_password_policy参数必须是MEDIUM或STRONG。

最后,我在了解完这些参数的概念后,又产生了个神奇的想法,测试这些数值参数的最大值域。经过我无聊至极的测试,得出validate_password_length、validate_password_mixed_case_count、validate_password_number_count和validate_password_special_char_count这四个参数的最大值是2147483647,超过此值会被截取成最大值,并抛出警告,在大于18446744073709551615时,就不再会是警告,而是直接报错参数类型不正确。

动态安装

动态安装指的是无需停止数据库,可直接进行安装并使用。

1、查看mysql插件目录路径

进入到mysql目录中

[root@localhost ~]# cd /usr/local/src/mysql

进入mysql命令行窗口

[root@localhost mysql]# bin/mysql -uroot -p

查看参数plugin_dir

mysql> show variables like 'plugin_dir';

mysql_validate_password_1

2、检查mysql插件目录

从上面得到mysql插件目录是/usr/local/src/mysql/lib/plugin,因此,直接进入此目录,查看validate_password插件是否存在即可。

进入插件目录

[root@localhost mysql]# cd /usr/local/src/mysql/lib/plugin

查看validate_password.so文件是否存在

[root@localhost plugin]# ls validate_password.so

3、安装插件

进入mysql命令行窗口

[root@localhost mysql]# bin/mysql -uroot -p

安装插件

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
mysql_validate_password_2

INSTALL PLUGIN 加载插件并将其注册到mysql.plugin系统表中,以便后续每次数据库启动后加载插件。

动态卸载

1、查看已注册的插件

进入mysql命令行窗口

[root@localhost mysql]# bin/mysql -uroot -p

查看插件

mysql> select * from mysql.plugin;
mysql_validate_password_3

2、卸载validate_password插件

卸载插件
mysql> UNINSTALL PLUGIN validate_password;

再次查看注册的插件

mysql> select * from mysql.plugin;
mysql_validate_password_4

0

评论区