操作实践之CentOS关于MySQL的安装及密码修改

本文是作者的一个操作实践,本着“知其然知其所以然”的态度,就稍微往里面深挖了一些,希望能对大家有些帮助。


一、安装实践

我用到的环境是:CentOS-7-x86_64-Minimal-2003、MySQL5.7.36、VM14虚拟机、通过 yum 安装

1、安装wget (一个从网络上自动下载文件的自由工具)

命令: yum -y install wget

这是一些安装信息,最后有Complete!(完整的) 就证明安装好了,在linux的环境下很多下载完成后都会显示。

2、通过wget下载MySQL安装包

命令: wget https://dev.mysql.com/get/mysql80-community-release-el7-4.noarch.rpm
(注意:请选择适合自己的链接,我的Linux是7.4)


可以在下面的官方链接中找到适合的版本:
MySQL :: Download MySQL Yum Repository

查看自己的Linux版本: cat /etc/redhat-release

3、下载好mysql 安装包后可以看到自己根目录多了一个.rpm文件(软件包管理器)

关于rpm文件Linux初学者可以通过以下的链接详细了解一下

RPM(RPM软件包管理器)_百度百科 (baidu.com)

(以上三步就是为了我们的根目录有一个MySQL的软件包管理器,如果你使用了文件可视化工具,那么自己下载一个在复制到根目录下也是可以的。例如:Xftp、WinSCP等工具)

这里我展示的是我的Xftp页面:

4、通过rpm安装MySQL的软件包管理器

命令:rpm -ivh mysql80-community-release-el7-4.noarch.rpm


达到100%后说明你已经成功安装好关于MySQL的软件管理器工具了,在 /etc/yum.repos.d/ 目录下查看会发现多了两个关于MySQL的文件。这个目录存放的都是关于yum的配置文件信息。

并且在 /etc/ 的目录下会有一个 my.cnf文件,不过目前我们并不需要用到它。可以查看一下!

5、设置自己需要的MySQL版本

上面的两个.repo结尾的文件,我们只需要关注 MySQL-community-repo 就好,因为它将决定你安装的MySQL版本。我们先来看看它的内容:

注意画箭头的两个部分是关于安装MySQL版本的,其余都是一些关于数据库使用的工具,没有特殊需求不用动他们。

此时 5.7 的enabled=0, 8.0的enabled=1。说明目前默认安装的是8.0版本。如果需要5.5、5.6版本的话请下载更早之前的rpm文件。(需要8.0的可以直接跳过步骤6)

6、更改自己需要的MySQL版本

使用:vi mysql-community.repo 的命令修改,5.7的enabled=1,8.0的enabled=0。

(修改文件单击字母 i, 然后编辑 ,编辑完成后单击esc,:wq 保存退出 。在设置网卡的时候相信大家应该熟悉编辑文件的操作了。)

修改完成后查看自己的yum关于MySQL的配置信息,命令:yum repolist all | grep mysql


我的5.7版本设置为enabled(允许),8.0设置为disabled(禁止)。建议查看清楚后在进行下面的安装操作,不然删除真的是一件令人头疼的事情。

7、安装MySQL

确认清楚自己需要的版本后通过yum安装MySQL。

命令: yum -y install mysql-community-server

安装时,同样的我们不需要关心其他的操作。只需要看最后是否有一个 Complete! 就好。

8、安装完成后 --启动MySQL服务

首先我们先来熟悉几个命令:(启动/关闭/查看/重启 mysql服务)

命令:service mysqld start/stop/status/restart


这里演示一下启动与查看的命令!

9、登录(在Linux下我们想登录并没有Windows下那么简单)

在Windows下一般我们会修改my.ini配置文件跳过权限登录,然后修改一个简单的密码。重启服务后就可以用新密码登录了。在Linux下同样有一个my.cnf的配置文件。我们也可以同样的跳过权限然后修改一个简单的密码。但是修改完成后却使用不了。这跟Linux下MySQL的密码策略有关。

(1)添加跳过权限语句,使用完后删除掉,不然可能导致数据的丢失。


(2)修改密码为 1111

(3)使用新的密码登录,并进行查询操作:

系统会提示我们使用alter语句重置密码;但是在Windows系统中完成了修改密码的操作后应该是没有问题的啊?那我们就耐着性子根据提示再次修改密码为’123456’

又错了,密码不够安全

为了验证真实性我尝试了四次密码的修改。为什么最后会有一个这么繁琐的密码呢?

因为 在Linux中MySQL5.7的初试密码策略为:长度最低8位,数字最少1位,特殊字符最少1位,英文大小写混合最1位。(可以进行数据库的操作了)。


二、MySQL 密码策略

1、关于数据库密码策略

在修改了符合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的版本。

2、密码策略如何实现更改

仔细看完步骤 1 的同学可能会想,那我用set不就可以完成修改密码策略了?
来,我们先试试:set validate_password_policy=0;


很遗憾《《好像不让我们修改,还是来翻译一下:变量验证密码策略是一个全局变量,应该全局修改它。

全局修改??? 别懵 全局修改 不就是 set global 嘛?可能有点搞笑,但是确实是这样的,试试:
set global validate_password_policy=0; alter user user() identified by '1234';

设置策略及长度后 查看密码策略:

3、修改简单密码

修改密码为1~4纯数字:alter user user() identified by '1234';

刷新权限后使用新密码登录:


让我们查看目前的密码策略:

好像成功了。别急,我们试着重启一下:

成功登录了,那么看看现在的密码策略:


居然恢复了中级!!先试试进行基本操作,看看我们是否真的登录成功了》》》

也可以进行基本的操作,那么到目前为止好像都万事大吉了。可能强迫症患者或者严谨的同学们会担心以后会不会出问题。既然这样,那我们不妨直接在my.cnf配置文件中设置:(这里我只添加了两个,其余参数有需要也可以添加,只需要注意密码策略就行)


修改完成后,我重启了mysql服务,登录后查看密码策略

现在为止完全解决了。

4、扩展:MySQL插件(组件)

简单学过MySQL的同学可能并不知道原来我们的数据库也是有插件的(我也刚知道_)

查看安装的插件:select * from information_schema.plugins\G; (最后注意大写,表示将从查询结果按列打印)

这个命令并没有太大的意义,我就不展示图片。但是想一下当你在后面加上条件还是挺有用的。在后面我加上了‘%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 服务器插件)

6、linux下MySQL的一些路径

在没有图形化操作的界面,我想很多人觉得能装上去就不错了(_),哪里还管它往哪装。但是现在可以回过头来看看他们到底都在哪个地方:

1、数据库的目录 : /var/lib/mysql/

2、插件的目录: /usr/lib64/mysql/plugin

3、配置文件我想就不用多讲了吧 ,但是有一点需要注意,如果/etc/找不到的话 可以在/usr/local/mysql里面找找,这应该是比较老的版本才会发生的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值