在修改了符合MySQL要求的密码后,我们终于可以对数据库进行基本操作了。现在我们需要知道为什么必须设置一个这样的密码,在登录了MySQL后输入命令:
show variables like 'validate_password%';
在提前没有任何修改的时候应该跟我图中的一样。现在我们来一次解读每一条参数的含义:
| validate_password_policy | 验证密码策略 |
|---|---|
| validate_password_length | 验证密码长度 |
| validate_password_check_user_name | 验证密码为用户名 |
| validate_password_mixed_case_count | 验证密码混合大小写的长度 |
| validate_password_number_count | 验证密码数字的长度 |
| validate_password_special_char_count | 验证密码特殊字符的长度 |
| validate_password_dictionary_file | 验证密码的字典文件 |
(对于上述的参数我并没有进行复杂的官方说明,仅仅是翻译了一下,相信有英文基础的同学甚至不需要我的翻译,其实代码的世界就是这样,很多东西仅仅只是需要翻译一边我们就能知道大概了。说这些是希望屏幕前的各位能有一种独立解决问题的思想习惯。说回正题!!!) 细心的同学应该发现我更改了顺序。下面我来解释一下:
以上几条参数中最重要的就是我们的 “验证密码策略” 默认的是 MEDIUM(中等的) ,让我们联想一下就还有 LOW(低级的)、STRONG(强的)。
下面做一下官方的声明:在官方5.7以后的版本中,为了保证数据库用户的安全,设置了三个密码等级,默认是中等的。三个等级分别也可以用0、1、2代替:策略依次为:(0/LOW:只验证长度)、(1/MEDIUM:验证长度、数字、大小写、特殊字符)、(2/STRONG:验证长度、大小写、特殊字符、字典文件)。
解释等级含义后我们就可以来分析参数length、mixed、number、special了,以下都简写有助于我们理解参数
策略为LOW时就只有参数 length 生效,因为这时候密码策略不会检查其他的参数,这是我们可以设置密码长度参数来达到设置简单密码的目的。根据上面的解释我们可以类推策略MEDIUM和STRONG 。同样只需要设置参数后面的数字就可以达到目的。对于剩下的参数:user_name、dictionary_file我们不必过多的理解,下面提供一个官方的链接给感兴趣的同学:
MySQL :: MySQL 8.0 参考手册 :: 6.4.3.2 密码验证选项和变量
虽然我使用的数据库版本是5.7,但是下面讲的同样适用于8.0版本,甚至我认为更适合于8.0的版本。
仔细看完步骤 1 的同学可能会想,那我用set不就可以完成修改密码策略了?
来,我们先试试:set validate_password_policy=0;
很遗憾《《好像不让我们修改,还是来翻译一下:变量验证密码策略是一个全局变量,应该全局修改它。
全局修改??? 别懵 全局修改 不就是 set global 嘛?可能有点搞笑,但是确实是这样的,试试:
set global validate_password_policy=0; alter user user() identified by '1234';
设置策略及长度后 查看密码策略:
修改密码为1~4纯数字:alter user user() identified by '1234';
刷新权限后使用新密码登录:
让我们查看目前的密码策略:
好像成功了。别急,我们试着重启一下:
成功登录了,那么看看现在的密码策略:
居然恢复了中级!!先试试进行基本操作,看看我们是否真的登录成功了》》》
也可以进行基本的操作,那么到目前为止好像都万事大吉了。可能强迫症患者或者严谨的同学们会担心以后会不会出问题。既然这样,那我们不妨直接在my.cnf配置文件中设置:(这里我只添加了两个,其余参数有需要也可以添加,只需要注意密码策略就行)
修改完成后,我重启了mysql服务,登录后查看密码策略
现在为止完全解决了。
4、扩展:MySQL插件(组件)简单学过MySQL的同学可能并不知道原来我们的数据库也是有插件的(我也刚知道_)
查看安装的插件:select * from information_schema.pluginsG; (最后注意大写,表示将从查询结果按列打印)
这个命令并没有太大的意义,我就不展示图片。但是想一下当你在后面加上条件还是挺有用的。在后面我加上了‘%password%’
最后一个是不是有点眼熟呢?就是我们的密码插件。之前我们由于直接在my.cnf配置文件中修改了密码策略,系统就默认为我们安装了密码插件,不然在刚开始的时候我们的数据库是默认没有安装它的。
5、如何安装插件如果大家不想跳过这些步骤,想知其所以然。那就请接着看下面安装插件的内容吧!!!
我先以我们的密码插件作为例子,有两种方式:
1、就是在自己的配置文件中添加下面这段话,让数据库初始化加载的时候直到自己需要加载这个插件:
plugin-load-add=validate_password.so (Linux中文件后缀名是.so,Windows是.dll)
2、直接安装 INSTALL PLUGIN validate_password SonAME 'validate_password.so';
注意: 安装完成后使用查询语句查看是否安装成功。其实用show也行。 当你想要安装其他软件的时候,知道他们的名字也可以用类似的方法。
(这篇官方文档介绍的十分详细,请耐心阅读下去:
MySQL :: MySQL 5.7 参考手册 :: 5.5 MySQL 服务器插件)
在没有图形化操作的界面,我想很多人觉得能装上去就不错了(_),哪里还管它往哪装。但是现在可以回过头来看看他们到底都在哪个地方:
1、数据库的目录 : /var/lib/mysql/
2、插件的目录: /usr/lib64/mysql/plugin
3、配置文件我想就不用多讲了吧 ,但是有一点需要注意,如果/etc/找不到的话 可以在/usr/local/mysql里面找找,这应该是比较老的版本才会发生的。
如何更改他们路径呢?
完结:本篇的内容就到这里,其实本篇我还准备讲讲数据库迁移的内容,但是由于学业的关系,我实在抽不出空做实验,没有做当然讲不好了,后面的内容我将会在休息日补上,还有关于yum,rpm,lrzsz等这些我们经常用到的安装方式。最后,作为一名Linux的初学者,希望我的实验可以帮到大家,也希望大家能够指出我不足的地方。互勉 (^ 0 ^)


