阶段二:MySQL8配置管理

任务背景

在企业开发与运维中,

1、掌握 MySQL 服务管理可保障数据库稳定运行;

2、本地远程登录是日常操作与跨设备协作的基础;

3、封装脚本从而实现自动化管理,提升效率;

这些技能是数据库管理与开发的核心需求。

任务拆解

MySQL8数据库服务管理(重点)

账号管理(重点)

☆ 修改密码

问题2:如何在MySQL终端重置MySQL密码?

为什么要学习在终端重置密码,使用mysqladmin不是也能重置密码么?

[root@mysql-node ~]# cd /export/server/mysql
[root@mysql-node ~]# bin/mysqladmin -uroot password '123456' -p
Enter password:输入初始化时获取的临时密码

以上操作方式相当于明文操作,而且以上命令会写入到history日志中,这会导致泄露风险,带来一些安全隐患!!!

终端重置密码(记下来):

# 登录终端
[root@mysql-node ~]# mysql -uroot -p
Enter password:      <== 这里输入 root 的密码

...

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
mysql> flush privileges;
# 但是root@localhost这个账号,只允许本机访问,不允许外部连接!!!

命令作用:

执行结果:

关键参数:

注意事项:

--skip-grant-tables:跳过密码验证 &:后台运行,不会影响命令行其他命令运行

&:发音and符号,如果卸载某个命令的后面,代表后台运行


第三步:登录mysql并重置密码(只能把密码置空!!!)

mysql8.0.40版本,不允许在非授权模式直接更改密码,我们只能把密码置空!!!

回车

注意事项:


**注意事项:**

回车

注意事项:


**注意事项:**

注意事项:



对DataGrip软件进行相关的操作设置。



![](/assets/feishu-images/5d81b8b93daa308d7d7c08b1.png)



![](/assets/feishu-images/ffb1cfb057b53ddbd31493f7.png)



![](/assets/feishu-images/4e2f6ecb4718a8f212a04713.png)


第一步:显示Files菜单

![](/assets/feishu-images/21e12729f4f4d1244e0a84b6.png)

 第二步:找到右侧的Files菜单,展开,鼠标右键

![](/assets/feishu-images/0822eb9db412e33fcd64de98.png)

第三步:选择你要存储SQL脚本文件的位置

![](/assets/feishu-images/7f16a7432b1ad7c2acdd4992.png)

确定,创建SQL代码文件

![](/assets/feishu-images/eb89b71a74d088496f992cb8.png)


![](/assets/feishu-images/56cf926e1e5681b77b784b99.png)




**举例:**

普通话:各数据库厂商都遵循的ISO标准。

方言:数据库特有的关键字。

![](/assets/feishu-images/44d8c986bae4aabffe9f928a.png)

*



等价于

/* ... 多行注释 ... */



SQL:(结构化查询语言),是关系型数据库管理系统都需要遵循的规范,不同的数据库生产厂商都支持SQL语句,但都有特有内容。

SQL语句分为:数据定义语言(DDL),数据操作语言(DML),数据查询语言(DQL),数据控制语言(DCL)。




说明:用户的信息保存在mysql数据库中的user表中,验证用户是否创建成功如下:
等价于

说明:SQL中的点号(下面两种场景)

注意:MySQL中不能单纯通过用户名来说明用户,必须要加上主机,如jack@10.1.1.1,'root'@'%'

语法

创建用户设置密码


示例

用户主机表示方式




前提:必须要保证账号存在。

修改用户

示例



语法


或者

示例

删除'user01'@'localhost'用户

删除一个匿名用户

删除mysql中的匿名用户 删除root用户从本机::1登录(::1表示IPv6地址)

注意:如果tcp/ip登录,服务器端口不是默认3306,则需要加端口号


**课堂练习**

1、创建三个账号,zhangsan、lisi、wangwu,其中主机IP自己定义就行;

2、把lisi改成xiaohong;

3、删除这些账号,把环境恢复如初;

本地连接:

image

远程连接:

image

所有权限说明https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html

以下权限为指定权限

super:允许跳过复制过滤规则、修改全局复制参数




注意:分配权限时只能分配小于等于当前用户的权限。
比如当前账号只有insert/delete/update/select,则这个账号只能给其他用户分配insert/delete/update/select。

权限保存位置

mysql.user:记录全局权限(影响所有数据库和表)的用户账号信息。 mysql.db:记录数据库级权限,控制用户对某个数据库(db.*)的操作权限。 mysql.tables_priv:记录表级权限,控制用户对特定表(db.table)的权限。 mysql.columns_priv:记录列级权限,控制用户对特定列(db.table.col)的权限。 mysql.procs_priv:记录存储过程和存储函数的权限,控制用户对存储过程或函数的执行和修改权限。


给用户授权

查看当前用户权限 查看指定用户权限

给tom@localhost用户授予查看db01库里所有表权限 刷新权限表

给tom@localhost用户授予修改db01库的ID字段的权限(了解)



创建用户方法




撤消指定的权限

撤消所有的权限

课堂练习

4、把全部权限收回,测试增删改查的能力;



> 
> 


第一步:恢复快照

![](/assets/feishu-images/2499fdca7a4865ae10c33700.png)

第二步:重新上传MySQL软件到到/root目录

![](/assets/feishu-images/57d132a2dec8c115826a29ce.png)




课堂代码(最少写2遍,加深巩固)

#!/bin/bash


#2.判断是否有压缩包,如果有,则执行解压缩操作

#3.判断系统中是否安装过mariadb软件,如果有对其进行卸载操作

#4.创建mysql系统账号

#5.创建/export/server目录,然后移动mysql压缩包解压后的文件到/export/server目录下

#6.进入mysql目录,对其进行初始化操作

#7.设置ssl加密传输连接

#8.设置my.cnf与mysqld.service文件
[mysqld]
port=3306
basedir=/export/server/mysql
datadir=/export/server/mysql/data
socket=/tmp/mysql.sock
character_set_server=utf8
collation-server=utf8_unicode_ci

[Unit]
After=network.target

[Service]
User=mysql
Group=mysql
Type=forking


TimeoutSec=600

PIDFile=/export/server/mysql/data/mysqld.pid

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

#9.刷新后台服务,然后启动mysqld

#10.重置mysql管理员密码为123456

#11.把mysql的bin目录添加到环境变量中


#13.弹出提示,MySQL安装成功

注意事项:

迭代优化(第二版)

#!/bin/bash

[mysqld] port=3306 basedir=/export/server/mysql datadir=/export/server/mysql/data socket=/tmp/mysql.sock character_set_server=utf8 collation-server=utf8_unicode_ci

[Unit] After=network.target

[Service] User=mysql Group=mysql Type=forking

TimeoutSec=600

PIDFile=/export/server/mysql/data/mysqld.pid

Restart=on-failure RestartSec=5

[Install] WantedBy=multi-user.target

#10.重置mysql管理员密码为123456


xargs:相当于|管道命令的补充符号,并不是所有的命令都支持|管道符号,但是如果一个命令不支持|管道,我们可以使用xargs让其强制支持。


> 
> 

设置完成后,运行以上脚本


到此MySQL就已经安装完毕了,后续各位小伙伴可以通过firewall-cmd,把3306、33060添加到防火墙规则中,允许通过防火墙。从而保证MySQL可连接性以及安全性。



**2、没有拷贝这个压缩包**

**3、脚本的第29行,没有创建出目录**

![](/assets/feishu-images/313915506da781811024cbb3.png)





达到要求:学会配置本地登录和远程登录

作业:封装脚本或者总结安装教程到云笔记,方便后期使用!