阶段二:MySQL8配置管理
任务背景
在企业开发与运维中,
1、掌握 MySQL 服务管理可保障数据库稳定运行;
2、本地远程登录是日常操作与跨设备协作的基础;
3、封装脚本从而实现自动化管理,提升效率;
这些技能是数据库管理与开发的核心需求。
任务拆解
- 实现服务管理的相关配置
- 能够把MySQL 8.0软件安装部署封装为一个Shell脚本
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这个账号,只允许本机访问,不允许外部连接!!!命令作用:
- 使用
mysql客户端连接数据库并执行 SQL 或客户端命令。
执行结果:
- 成功后客户端会连接目标服务并执行指定操作;失败时检查地址、端口、用户、密码和数据库名称。
关键参数:
注意事项:
--skip-grant-tables:跳过密码验证 &:后台运行,不会影响命令行其他命令运行
&:发音and符号,如果卸载某个命令的后面,代表后台运行
第三步:登录mysql并重置密码(只能把密码置空!!!)
mysql8.0.40版本,不允许在非授权模式直接更改密码,我们只能把密码置空!!!
回车注意事项:
**注意事项:**
回车注意事项:
**注意事项:**注意事项:
对DataGrip软件进行相关的操作设置。



第一步:显示Files菜单

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

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

确定,创建SQL代码文件


**举例:**
普通话:各数据库厂商都遵循的ISO标准。
方言:数据库特有的关键字。

*
等价于/* ... 多行注释 ... */
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、删除这些账号,把环境恢复如初;
本地连接:

远程连接:

所有权限说明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、把全部权限收回,测试增删改查的能力;
>
>
第一步:恢复快照

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

课堂代码(最少写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行,没有创建出目录**

达到要求:学会配置本地登录和远程登录
作业:封装脚本或者总结安装教程到云笔记,方便后期使用!