美文网首页半栈工程师
(四)MariaDB密码验证插件使用示例

(四)MariaDB密码验证插件使用示例

作者: 紫狐挽诗 | 来源:发表于2020-06-24 20:07 被阅读0次

    示例介绍密码验证插件 Simple Password Check Plugin (MariaDB 10.1.2.加入)——(顺带简单介绍一些 DBeaver 的使用)

    之前我们在设定 root 密码时,使用的是简单密码“root”,虽然后续连接时,要加 sudo,但是该账号密码依旧可用。

    以 mariadb-server 现有的状态,新建一个账号:

    新建用户

    再输入账号信息:

    赋予用户权限信息

    然后点击右下角的保存,会有执行语句窗口,语句如下

    CREATE USER 'test'@'%';
    ALTER USER 'test'@'%'
    IDENTIFIED BY '123456' ;
    GRANT Create user ON *.* TO 'test'@'%';
    GRANT Event ON *.* TO 'test'@'%';
    GRANT File ON *.* TO 'test'@'%';
    GRANT Process ON *.* TO 'test'@'%';
    GRANT Reload ON *.* TO 'test'@'%';
    GRANT Replication client ON *.* TO 'test'@'%';
    GRANT Replication slave ON *.* TO 'test'@'%';
    GRANT Show databases ON *.* TO 'test'@'%';
    GRANT Shutdown ON *.* TO 'test'@'%';
    GRANT Super ON *.* TO 'test'@'%';
    GRANT Create tablespace ON *.* TO 'test'@'%';
    GRANT Usage ON *.* TO 'test'@'%';
    FLUSH PRIVILEGES;
    

    再点击执行,可见保存成功。test 账号新建成功。

    从代码上,可以看到账号 test 的密码是 123456,但是这个账号的权限是 check all 选择的所有,相当大的权限。所以这个密码不是很安全。

    事实上,这种权责很大、很重要的账号,其密码就不应该运行设定得如此简单,但现在的默认情况下,MariaDB 是可以这样设定密码的。

    这样,可以使用simple_password_check 插件,避免设定账号的密码时过于简单。它可以检查密码是否至少包含一定数量的特定类型的字符。

    首次安装时,密码必须至少为八个字符,并且至少需要一个数字,一个大写字母,一个小写字母以及一个既不是数字也不是字母的字符。

    安装:

    INSTALL SONAME 'simple_password_check';
    

    INSTALL PLUGIN simple_password_check;
    

    注意一个是 library,一个是 name,一个有引号,一个没有。

    安装完使用select * from mysql.plugin;查看是否安装成功(不出意外都成功的)。

    注意:插件还可以在配置文件中启用。

    找到 MariaDB 的配置文件,默认应该是文件/etc/mysql/my.cnf

    打开文件并在末端添加以下红框参数

    [mariadb]
    plugin_load_add = simple_password_check
    

    配置文件添加插件

    修改完配置文件,要重启 MariaDB 服务,例如终端执行sudo service mariadb restart

    重启完之后,在 dbeaver 中或 mysql 的命令窗口查看 simple_password 的相关参数,就可以看到以下信息:

    simple_password相关参数

    注意:
    在配置文件中添加的插件配置,select * from mysql.plugin;是查询不到的。
    不用该插件了,从配置文件中删除即可,当然也要重启生效。

    (后续插件的安装卸载,还是使用指令,不去修改配置文件。)

    从上图参数设定也可看到,simple_password_check 要求密码必须至少为八个字符,并且至少需要一个数字,一个大写字母,一个小写字母以及一个既不是数字也不是字母的字符。

    可以测试:

    创建账号 test2,密码 123456

    GRANT all  ON *.* TO 'test2'@'%' identified by '123456;
    

    不符合要求的创建账户密码报错

    改成符合要求的密码例如 P@ssw0rd 就可以了。

    GRANT all  ON *.* TO 'test2'@'%' identified by 'P@ssw0rd';
    

    符合要求的创建账户密码

    当然,这些限制是可以修改的

    例如,原本是数字至少 1 位,现在改成 2 位

    SET GLOBAL simple_password_check_digits=2
    

    修改账户密码的限制要求

    使用show variables like 'simple_password%';查看异动。

    之前的密码只有 1 个数字,已经不符合要求了。

    不符合要求的创建账户密码报错

    同理,其它参数也是可以修改的,指令类似(n 正整数):

    SET GLOBAL simple_password_check_letters_same_case=n;
    SET GLOBAL simple_password_check_minimal_length=n;
    SET GLOBAL simple_password_check_other_characters=n;
    

    说明:
    SET GLOBAL 操作修改变量,重启服务之后可能就会被重置,需要永久生效,还是放到配置文件中好些。
    后续所有提到的 SET GLOBAL,大部分都会有对应的配置文件修改设定。

    相关文章

      网友评论

        本文标题:(四)MariaDB密码验证插件使用示例

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