MySQL 安全机制全面解析
在如今的数字化时代,数据库安全 变得越来越重要。为了防止对数据库进行非法操作,MySQL 定义了一套完整的安全机制,包括用户管理、权限管理 和 角色管理。本文将为你深入浅出地介绍这三大安全机制,帮助你轻松掌握MySQL的安全管理。
7.3.1 用户管理:从创建到删除,全面掌握用户管理
用户管理 是MySQL安全机制的基础,涉及到用户的创建、修改、删除等操作。每个MySQL用户账号由用户名 和 主机名 组成,表示形式为 USER@HOST
,如 root@localhost
。
1. 查询用户
在MySQL中,所有用户账号及相关信息都存储在 mysql
数据库的 user
表中。你可以使用以下命令查看所有用户:
SELECT user, host FROM mysql.user;
示例结果:
主机名(Host) 可以为以下三种形式:
- localhost:表示用户只能在MySQL服务器所在的机器上登录。
- % :表示用户可以在MySQL服务器以外的其他机器上登录(默认选项)。
- 指定IP或网段:表示用户只能在指定机器或网段内的机器上登录。
2. 创建用户
使用 CREATE USER
语句可以创建新用户。示例: 创建用户 usera
,主机名为 localhost
,密码为 a123
:
CREATE USER 'usera'@'localhost' IDENTIFIED BY 'a123';
3. 修改用户名
使用 RENAME USER
语句可以修改已有用户的用户名。示例: 将 usera
改为 userb
:
RENAME USER 'usera'@'localhost' TO 'userb'@'localhost';
4. 修改用户密码
在MySQL 8.0及以上版本中,使用 ALTER USER
语句修改用户密码。示例: 将 userb
的密码修改为 b123
:
ALTER USER 'userb'@'localhost' IDENTIFIED WITH mysql_native_password BY 'b123';
5. 删除用户
使用 DROP USER
语句删除不再需要的用户。示例: 删除用户 userb
:
DROP USER IF EXISTS 'userb'@'localhost';
7.3.2 权限管理:精细化控制用户操作权限
权限管理 通过为用户分配权限来控制他们对数据库的操作能力。MySQL的权限分为管理权限、数据库权限、表权限 和 列权限。
常见权限类型
- 管理权限:作用于所有数据库,如创建用户、关闭数据库等。
- 数据库权限:作用于指定数据库中的所有对象,如创建和删除表的权限。
- 表权限:作用于指定表,如对表进行增、删、改、查的权限。
- 列权限:作用于指定表的指定列,如更新某一列的权限。
示例: 授予 usera
在所有数据库中创建表的权限:
GRANT CREATE ON *.* TO 'usera'@'localhost';
授予权限
使用 GRANT
语句授予用户权限。示例: 授予 usera
在 Teach
数据库中查询 Student
表的权限,并允许将此权限转授给他人:
GRANT SELECT ON Teach.Student TO 'usera'@'localhost' WITH GRANT OPTION;
回收权限
使用 REVOKE
语句回收用户的权限。示例: 回收 usera
查询 Teach
数据库中 Student
表的权限:
REVOKE SELECT ON Teach.Student FROM 'usera'@'localhost';
注意: MySQL中的权限不能级联回收,即用户A将权限授予用户B,用户B又将此权限授予用户C。当用户A回收B的权限时,用户C的权限不会自动被回收。
7.3.3 角色管理:简化权限管理的利器
角色管理 是MySQL中简化权限管理的工具。角色是一组与数据库操作相关的权限,当将角色授予用户时,相当于为用户授予了多个权限,极大地简化了权限管理。
1. 创建角色
使用 CREATE ROLE
语句创建新角色。示例: 创建两个角色 rstudent
和 rteacher
:
CREATE ROLE 'rstudent', 'rteacher';
2. 为角色授权
使用 GRANT
语句为角色授权。示例: 授予 rstudent
查询 Teach
数据库中所有表的权限,授予 rteacher
查询并更新 Teach
数据库中所有表的权限:
GRANT SELECT ON Teach.* TO 'rstudent';
GRANT SELECT, UPDATE ON Teach.* TO 'rteacher';
3. 将角色授予用户
使用 GRANT
语句将角色授予用户。示例: 将 rstudent
授予 usera
,将 rteacher
授予 userb
:
GRANT 'rstudent' TO 'usera'@'localhost';
GRANT 'rteacher' TO 'userb'@'localhost';
4. 设置默认角色
使用 SET DEFAULT ROLE
语句设置用户的默认角色。示例: 设置 rstudent
为 usera
的默认角色:
SET DEFAULT ROLE 'rstudent' TO 'usera'@'localhost';
5. 启用和禁用角色
使用 SET ROLE
语句启用或禁用角色。示例: 启用 usera
的 rstudent
角色:
SET ROLE 'rstudent';
6. 回收角色权限
使用 REVOKE
语句回收角色的权限。示例: 回收 rstudent
查询 Teach
数据库中所有表的权限:
REVOKE SELECT ON Teach.* FROM 'rstudent';
7. 撤销角色
使用 REVOKE
语句撤销用户的角色。示例: 撤销 usera
的 rstudent
角色:
REVOKE 'rstudent' FROM 'usera'@'localhost';
8. 删除角色
使用 DROP ROLE
语句删除不再需要的角色。示例: 删除 rstudent
和 rteacher
角色:
DROP ROLE 'rstudent', 'rteacher';
总结:全面掌握MySQL安全机制
通过本文的讲解,你应该对MySQL的安全机制 有了更深入的理解。用户管理、权限管理 和 角色管理 共同构成了MySQL的安全防线,帮助你有效地管理和保护数据库。
相关文章:

MySQL 安全机制全面解析
在如今的数字化时代,数据库安全 变得越来越重要。为了防止对数据库进行非法操作,MySQL 定义了一套完整的安全机制,包括用户管理、权限管理 和 角色管理。本文将为你深入浅出地介绍这三大安全机制,帮助你轻松掌握MySQL的安全管…...
vue原理分析(十四)研究new Vue()中的 initProvide
在Vue.prototype._init 中有一些init函数,今天我们来研究这些init函数 Vue.prototype._init function (options) {......{initProxy(vm);}......initLifecycle(vm);initEvents(vm);initRender(vm);callHook$1(vm, beforeCreate, undefined, false /* setContext *…...

Qt控制开发板的LED
Qt控制开发板的LED 使用开发板的IO接口进行控制是嵌入式中非常重要的一点,就像冯诺依曼原理说的一样,一个计算机最起码要有输入输出吧,我们有了信息的接收和处理,那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…...

S3C2440开发板点亮LED灯+PWM定时器
目录 GPIO引脚和寄存器概述 点亮LED灯步骤 1.配置GPIO 2.点亮LED 设置引脚为输出 控制引脚电平 完整代码 PWM GPIO引脚和寄存器概述 GPIO端口: S3C2440的GPIO引脚可被配置为输入或输出(控制LED的引脚通常配置为输出模式)。寄存器&#…...

S-Procedure的基本形式及使用
理论 Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- \textbf{Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- } Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- tions w.r.t. x ∈ C M 1 \mathbf{x}\in\mathbb{C}^M\times1 x…...

free -h 查看内存free空间不足
free空间不足 大部分被buff/cache占用 解决办法一: 手动释放缓存 释放页缓存 sudo sync; sudo sysctl -w vm.drop_caches1 释放目录项和inode缓存 sudo sync; sudo sysctl -w vm.drop_caches2 释放所有缓存(页缓存、目录项和inode缓存) sudo sync…...
rust学习笔记
参考资料:https://doc.rust-lang.org/book/ch01-02-hello-world.html 一、 编译与运行 在 Rust 中,编译和运行代码的常用命令是使用 cargo,这是 Rust 的包管理和构建工具。以下是使用 cargo 和 rustc(Rust 编译器)的具…...

【有啥问啥】复习变分下界即证据下界(Evidence Lower Bound, ELBO):原理与应用
复习变分下界即证据下界(Evidence Lower Bound, ELBO):原理与应用 变分下界(Variational Lower Bound),也称为“证据下界”(Evidence Lower Bound, ELBO),是概率模型中的…...

Linux shell编程学习笔记78:cpio命令——文件和目录归档工具(上)
0 前言 在Linux系统中,除了tar命令,我们还可以使用cpio命令来进行文件和目录的归档。 1 cpio命令的功能,帮助信息,格式,选项和参数说明 1.1 cpio命令的功能 cpio 名字来自 "copy in, copy out"…...
为什么在 JSON 序列化中不使用 transient
有些小伙伴发现了,明明在返回的实体类中指定了属性为transient。为什么前端得到的返回json中还是有这个属性的值? 类: private String name; private transient String password;返回结果: { name:"刘大大", password:…...

K8S - Volume - NFS 卷的简介和使用
在之前的文章里已经介绍了 K8S 中两个简单卷类型 hostpath 和 emptydir k8s - Volume 简介和HostPath的使用 K8S - Emptydir - 取代ELK 使用fluentd 构建logging saidcar 但是这两种卷都有同1个限制, 就是依赖于 k8s nodes的空间 如果某个service pod中需要的vol…...

IO模型---BIO、NIO、IO多路复用、AIO详解
本篇将想给详细解释一下什么是BIO、NIO、IO多路复用以及AIO~ 同步的阻塞(BIO)和非阻塞(NIO)的区别 BIO:线程发来IO请求后,一直阻塞着IO线程,需要缓冲区这边数据准备好之后,才会进行下一步的操作。 举个🌰࿱…...

蓝桥杯真题——约翰的牛奶
输入样例: 8 9 10 输出样例: 1 2 8 9 10 本题是宽搜的模版题,不论怎么倒牛奶,A,B,C 桶里的牛奶可以看做一个三元点集 我们只要找到A桶是空的,B,C桶中的状态即可 #include <iostream> #include <cstring…...

单机docker-compose部署minio
单机多副本docker-compose部署minio 简单介绍 如果服务器有限可以单机挂载多硬盘实现多副本容错(生产不推荐) 部署好的文件状态 有两个重要文件 docker-compose.yaml和nginx.conf docker-compose.yaml是docker部署容器的配置信息包括4个minio和1个ng…...

Winform实现弹出定时框功能
1、程序 private void TimeDialogInitialize(){for(int i1; i<30;i){cbbTimeDialog.Items.Add(i);}}private void cbbTimeDialog_SelectedIndexChanged(object sender, EventArgs e){foreach(int i in cbbTimeDialog.Items){if(cbbTimeDialog.SelectedItem!null &&…...

【机器学习(四)】分类和回归任务-梯度提升决策树(GBDT)-Sentosa_DSML社区版
文章目录 一、算法概念一、算法原理(一) GBDT 及负梯度拟合原理(二) GBDT 回归和分类1、GBDT回归1、GBDT分类二元分类多元分类 (三)损失函数1、回归问题的损失函数2. 分类问题的损失函数: 三、G…...

Mini-Omni 语言模型在流式传输中边思考边听说应用
引入简介 Mini-Omni 是一个开源的多模态大语言模型,能够在思考的同时进行听觉和语言交流。它具有实时端到端语音输入和流媒体音频输出的对话能力。 语言模型的最新进展取得了显著突破。GPT-4o 作为一个新的里程碑,实现了与人类的实时对话,展示了接近人类的自然流畅度。为了…...
vue devtools的使用
vue devtools的使用 Vue Devtools 是一个强大的浏览器扩展,旨在帮助你调试和开发 Vue.js 应用。它支持 Chrome 和 Firefox 浏览器,并提供了一些工具和功能,可以让你更轻松地查看和调试 Vue 应用的状态和行为。以下是如何安装和使用 Vue Devtools 的详细指南。 安装 Vue De…...

无人机培训:无人机维护保养技术详解
随着无人机技术的飞速发展,其在航拍、农业、救援、环境监测等领域的应用日益广泛。然而,要确保无人机安全、高效地执行任务,定期的维护保养至关重要。本文将深入解析无人机维护保养的核心技术,涵盖基础构造理解、清洁与防尘、电机…...
Mac 创建 Python 虚拟环境
在 macOS 上,您可以使用以下步骤使用 virtualenv 创建虚拟环境: 首先,确保您已经安装了 Python 和 virtualenv。您可以在终端中运行以下命令来检查它们是否已安装: python --version virtualenv --version如果这些命令没有找到&am…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...