插件(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 的相关参数,就可以看到以下信息:
注意:
在配置文件中添加的插件配置,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,大部分都会有对应的配置文件修改设定。