03、MySQL安全管理和特性解析(DBA运维专用)
03、MySQL安全管理和特性解析
本节主要讲MySQL的安全管理、角色使用、特定场景下的数据库对象、各版本特性以及存储引擎
目录
03、MySQL安全管理和特性解析
1、 用户和权限管理
2、 MySQL角色管理
3、 MySQL密码管理
4、 用户资源限制
5、 忘记root密码处理办法
6、 SQL MODE详解
7、 视图、存储过程、触发器的使用
8、 MySQL5.5、5.6、5.7、8.0各个版本的特性
5.5特性
MySQL 5.6的特性
MySQL 5.7的特性
MySQL 8.0 新特性
2、MySQL加列三种算法是什么?区别是什么?
COPY 算法
INPLACE 算法
INSTANT 算法
3、假如入你是DBA,一个新业务研发考虑使用5.6,请你说服他们使用 MySQL8.0
9、 MySQL各个存储引擎介绍
1、InnoDB存储引擎和MyISAM存储引擎区别和适用场景?
2、TokuDB有哪些应用场景?
3、适用MEMORY存储引擎要注意哪些问题?
4、CSV存储引整有哪些适用场景?
5.为什么从MySQL5.5开始,MySQL默认的存储引擎改成了InnoDB?
6.假如你管理的业务线,有多张MyISAM表,你会怎么处理?
1、 用户和权限管理
创建/删除用户
某个同事要申请一个haohao库的远程只读用户,他的IP是192.168.1.3 可移执行: CREATE USER 'haohao_r'@'192.168.1.3' IDENTIFIED BY 'password'; 如果是客户端多个网段可移植执行: CREATE USER 'haohao_r'@'192.168.1.%' IDENTIFIED BY 'password'; 查用户 select user,host from mysql.user; 删除用户 DROP USER 'haohao'@'192.168.1.%';
用户授权
GRANT insert,delete,select,update ON haohao.* TO 'haohao'@'localhost'; 如果要给力某列授权就执行: CREATE USER haohao_r_1@localhost IDENTIFIED BY 'password'; grant select(id,name) on haohao.grant_test to haohao_r_1@localhost;
查用户权限
show grants for haohao_r_1@localhost;
回收权限
REVOKE INSERT ON haohao.* FROM 'haohao'@'localhost';
2、 MySQL角色管理
创建角色
CREATE ROLE 'app_developer'; 给角色授权 GRANT select,update,delete,insert ON app_db.* TO 'app_developer';使用角色,受先创建一个用户: create user 'haohao_role'@'localhost' identified by 'IHB87Edsa'; 然后给用户富余角色,用来替换GRANT SELECT,UPDATE,DELETE,INSERT: grant 'app_developer' to 'haohao_role'@'localhost';用户撤销角色 revoke app_developer from 'haohao_role'@'localhost'; 删除角色 drop role app_developer;
3、 MySQL密码管理
修改root密码
ALTER USER user() IDENTIFIED BY 'xxx';
修改普通用户密码
alter user 'haohao'@'localhost' identified by 'xxx'; ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'NewPassword123!';
查看密码相关参数:
show global variables like 'validate_password%';
4、 用户资源限制
创建时限制资源
CREATE USER 'haohao_02'@'localhost' identified by 'Udapadg999a^' WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100 MAX_CONNECTIONS_PER_HOUR 50 MAX_USER_CONNECTIONS 50;
修改现有用户的资源限制
ALTER USER 'haohao'@'localhost' WITH MAX_QUERIES_PER_HOUR 100; 如果要曲线限制,就把值设置成0 ALTER USER 'haohao'@'localhost' WITH MAX_QUERIES_PER_HOUR 0;
重置资源使用计数
FLUSH USER_RESOURCES; 或者 FLUSH PRIVILEGES
5、 忘记root密码处理办法
编辑配置文件
vim /data/mysql/conf/my.cnf 增加 skip-grant-tables 重启mysql /etc/init.d/mysql.server restart
免密方式登录
mysql -uroot -p 执行修改密码报错 alter user user() identified by 'dup81Gcda2'; 直接修改用户表,把root密码设置为空: update mysql.user set authentication_string = '' where user = 'root' and host='localhost'; 再重启然后用空密码登录 最后修改密码 alter user user() identified by 'dup81Gcda2';
6、 SQL MODE详解
-
SQL 模式(SQL Mode)是 MySQL 数据库中的一个配置选项,它用于定义 MySQL 应该如何处理 SQL 语句中的语法、数据验证和其他相关操作。可以把它看作是一组规则,这些规则决定了 MySQL 对不同类型的 SQL 语句和数据的行为方式。
查询全局的sql_mode
select @@global.sql_mode; 查看当前会话的 select @@session.sql_mode; 在配置文件中加入 sql-mode="xxx"
MySQL在运行时,如果要修改全局的sql_mode,执行:
SET GLOBAL sql_mode = 'modes';
修改当前会话执行
SET SESSION sql_mode = 'modes';
在原有基础上增加一种模式
SET SESSION sql_mode = sys.list_add(@@session.sql_mode, 'ONLY_FULL_GROUP_BY');
去掉一种模式
SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY');
清空sql_mode
SET SESSION sql_mode = '';
7、 视图、存储过程、触发器的使用
视图(View)
-
视图是一个虚拟表,它是从一个或多个表(或其他视图)中的数据通过查询语句定义而来的。它本身不存储数据,数据实际存储在基础表中。当对视图进行查询操作时,数据库会根据视图的定义从相关的基础表中获取数据并返回结果。例如,在一个包含 “学生表(students)”、“课程表(courses)” 和 “选课表(course_selection)” 的数据库中,可以定义一个视图来展示学生所选课程的信息,如:
创建 CREATE VIEW student_courses_view AS SELECT s.name, c.course_name, cs.grade FROM st
相关文章:
03、MySQL安全管理和特性解析(DBA运维专用)
03、MySQL安全管理和特性解析 本节主要讲MySQL的安全管理、角色使用、特定场景下的数据库对象、各版本特性以及存储引擎 目录 03、MySQL安全管理和特性解析 1、 用户和权限管理 2、 MySQL角色管理 3、 MySQL密码管理 4、 用户资源限制 5、 忘记root密码处理办法 6、 SQ…...
创建型模式5.单例模式
创建型模式 工厂方法模式(Factory Method Pattern)抽象工厂模式(Abstract Factory Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)单例模式(Singleto…...

用户界面软件02
基于表单的用户界面 在“基于表单的用户界面”里面,用户开始时选中某个业务处理(模块),然后应用程序就使用一系列的表单来引导用户完成整个处理过程。大型机系统上的大部分用户界面都是这样子的。[Cok97]中有更为详细的讨论。 面…...
VTK 鼠标+键盘重构
1、鼠标事件 如果有鼠标事件处理等相应的需求,可以重写该事件。 void OnMouseMove() override; //鼠标移动事件 void OnLeftButtonDown() override;//左键按下事件 void OnLeftButtonUp() override;//左键抬起事件 void OnMiddleButtonDown() override;//滚轮按下事件 …...
go语言处理JSON数据详解
一、结构体与json之间的转换 Go语言处理JSON数据通常涉及到将JSON数据解析成Go结构体,或者将Go结构体序列化为JSON格式。Go提供了内置的encoding/json包来实现这些操作。下面详细介绍如何在Go中处理JSON数据。 1. Go结构体与JSON映射 Go语言的encoding/json包可以将JSON数据…...
基于gin一个还算比较优雅的controller实现
看了两天时间的go,对于go的编码风格还不是很了解,但是了解到go并未有Java那样成体系的编码风格规范,所以自己浅尝试了一下,风格无对错,欢迎交流讨论~ controller层: package …...

PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目,旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本,还能保留公式、图表、目…...

Python编程实例-特征向量与特征值编程实现
特征向量与特征值编程实现 文章目录 特征向量与特征值编程实现1、什么是特征向量2、特征向量背后的直觉3、为什么特征向量很重要?4、如何计算特征向量?4、特征向量Python实现5、可视化特征向量6、总结线性代数是许多高级数学概念的基石,广泛应用于数据科学、机器学习、计算机…...
Vue3-跨层组件通信Provide/Inject机制详解
Vue 3 中的 Provide 和 Inject 机制是专为跨层级传递数据而设计的,适用于祖先组件和后代组件之间的通信。与props 和 emits 不同,Provide/Inject 可以跨越多个层级进行数据传递,而不需要逐层传递。 1. Provide provide 是一个在祖先组件中提…...
Linux Jar包定时重启脚本,按最新时间的Jar包启动
Linux Jar包定时重启脚本,按最新时间的Jar包启动 jar包按时间顺序命名如下: park-system-1.1.0-SNAPSHOT_20210101.jar park-system-1.1.0-SNAPSHOT_20210402.jar park-system-1.1.0-SNAPSHOT_20220520.jar 则该脚本默认启动时间最大的一个:park-system-1.1.0-SNAPSHOT_2022…...

HTML5实现好看的博客网站、通用大作业网页模板源码
HTML5实现好看的博客网站、通用大作业网页模板源码 前言一、设计来源1.1 主界面1.2 列表界面1.3 文章界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的博客网站、通用大作业网页模板源码,博客网站源码,HTML模板源码࿰…...

掌握RabbitMQ:全面知识点汇总与实践指南
前言 RabbitMQ 是基于 AMQP 高级消息队列协议的消息队列技术。 特点:它通过发布/订阅模型,实现了服务间的高度解耦。因为消费者不需要确保提供者的存在。 作用:服务间异步通信;顺序消费;定时任务;请求削…...

go如何从入门进阶到高级
针对Go语言的学习,不同阶段应采取不同的学习方式,以达到最佳效果.本文将Go的学习分为入门、实战、进阶三个阶段,下面分别详细介绍 一、社区 Go语言中文网 作为专注于Go语言学习与推广的平台,Go语言中文网为开发者提供了丰富的中…...
在环境冲突情况下调整优先级以解决ROS Catkin构建中缺少模块的问题【ubuntu20.04】
在机器人操作系统(ROS)的开发过程中,构建工作空间时遇到各种依赖性问题是常见的挑战之一。尤其是在多Python环境共存的情况下,环境变量的冲突往往导致诸如缺少empy模块等错误。本文将详细介绍在ROS Noetic与Anaconda Python环境共…...

github 个人主页配置
Guthub 个人主页 (官方称呼是 profile)可以展示很多有用的信息,例如添加一个首页被访问次数的计数器,一个被 Star 与 Commit 的概览信息,以及各种技能标签,设备标签等,还可以利用 wakatime 显示…...
STM32-笔记30-编程实现esp8266联网功能
串口2连接ESP8266模块 复制项目文件34-ESP8266串口间的通信 重命名为35-编程实现ESP8266联网功能 打开项目文件 main.c #include "sys.h" #include "delay.h" #include "led.h" #include "uart1.h" #include "esp8266.h"…...

oscp备考 oscp系列——Kioptix Level 1靶场 古老的 Apache Vuln
目录 前言 1. 主机发现 2. 端口扫描 3. 指纹识别 4. 目录扫描 5. 漏洞搜索和利用 前言 oscp备考,oscp系列——Kioptix Level 1靶场 Kioptix Level 1难度为简单靶场,主要考察 nmap的使用已经是否会看输出,以及是否会通过应用查找对应漏…...

《机器学习》——随机森林
文章目录 什么是随机森林?随机森林的原理随机森林的优缺点优点缺点 随机森林模型API主要参数 实例实例步骤导入数据处理数据,切分数据构建模型训练模型测试数据并输出分类报告和混淆矩阵画出模型的前十重要性的特征 扩展 什么是随机森林? -随…...

指代消解:自然语言处理中的核心任务与技术进展
目录 前言1. 指代消解的基本概念与分类1.1 回指与共指 2. 指代消解的技术方法2.1 端到端指代消解2.2 高阶推理模型2.3 基于BERT的模型 3. 事件共指消解:跨文档的挑战与进展3.1 联合模型3.2 语义嵌入模型(EPASE) 4. 应用场景与前景展望4.1 关键…...
记录一下Unity webgl cannot read properties of undefined reading apply 错误
出现这个问题说明你Build 文件夹的内容和最新的打包内容冲突了 解决方法是把Build文件夹里面的东西全部删了 然后使用Unity重新生成这些文件 后续发现还是有这个问题 然后想了一下本地冲突应该在前端吧本地的文件删了重新拉取服务器的文件才行 以下是解决方法 <script t…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...

Java设计模式:责任链模式
一、什么是责任链模式? 责任链模式(Chain of Responsibility Pattern) 是一种 行为型设计模式,它通过将请求沿着一条处理链传递,直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者,…...