美文网首页MySQL
39-MySQL密码强度

39-MySQL密码强度

作者: 紫荆秋雪_文 | 来源:发表于2022-09-20 13:56 被阅读0次

    一、MySQL的安全策略

    alter user 'root' identified by 'abcd1234';
    
    • MySQL5.7中执行会成功
    • MySQL8.0中执行会失败
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    

    1、 MySQL8之前的安全策略

    在MySQL 8.0之前,MySQL使用的是validate_password插件检测、验证账号密码强度,保障账号的安全性

    1、安装/启用插件方式一:在参数文件my.cnf中添加参数

    [mysqld]
    plugin-load-add=validate_password.so
    #ON/OFF/FORCE/FORCE_PLUS_PERMANENT: 是否使用该插件(及强制/永久强制使用)
    validate-password=FORCE_PLUS_PERMANENT
    
    • 修改参数后必须重启MySQL服务才能生效
    SELECT PLUGIN_NAME, PLUGIN_LIBRARY, PLUGIN_STATUS, LOAD_OPTION
    FROM INFORMATION_SCHEMA.PLUGINS
    WHERE PLUGIN_NAME = 'validate_password';
    
    UNINSTALL PLUGIN validate_password;
    ERROR 1702 (HY000): Plugin 'validate_password' is force_plus_permanent and can not be unloaded
    

    2、安装/启用插件方式二:运行时命令安装(推荐)

    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    
    • 此方法也会注册到元数据,也就是mysql.plugin表中,所以不用担心MySQL重启后插件会失效

    二、MySQL8的安全策略

    1、validate_password

    MySQL 8.0,引入了服务器组件(Components)这个特性,validate_password插件已用服务器组件重新实
    现。8.0.25版本的数据库中,默认自动安装validate_password组件。未安装插件前,执行如下两个指令 ,执行效果:

    show variables like 'validate_password%';
    
    SELECT * FROM mysql.component;
    ERROR 1146 (42S02): Table 'mysql.component' doesn't exist
    
    • 安装插件后 image.png

    2、 validate_password

    image.png
    • 修改安全策略
    SET GLOBAL validate_password_policy=LOW;
    SET GLOBAL validate_password_policy=MEDIUM; 
    SET GLOBAL validate_password_policy=STRONG; 
    SET GLOBAL validate_password_policy=0; # For LOW
    SET GLOBAL validate_password_policy=1; # For MEDIUM 
    SET GLOBAL validate_password_policy=2; # For HIGH 
    #注意,如果是插件的话,SQL为set global validate_password_policy=LOW
    
    • 修改密码中字符的长度
    set global validate_password_length=1;
    

    3、密码强度测试

    如果你创建密码是遇到“Your password does not satisfy the current policy requirements”,可以通过函数组件去检测密码是否满足条件: 0-100。当评估在100时就是说明使用上了最基本的规则:大写+小写+特殊字符+数字组成的8位以上密码

    image.png
    • 如果没有安装validate_password组件或插件的话,那么这个函数永远都返回0。 关于密码复杂度对

      应的密码复杂度策略 image.png

    4、卸载插件、组件

    • 卸载插件
     UNINSTALL PLUGIN validate_password;
    
    • 卸载组件
    UNINSTALL COMPONENT 'file://component_validate_password';
    

    相关文章

      网友评论

        本文标题:39-MySQL密码强度

        本文链接:https://www.haomeiwen.com/subject/tpyportx.html