插件(PLUGIN)使用示例

示例介绍密码验证插件 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,大部分都会有对应的配置文件修改设定。