mysql笔记:14. 权限管理
文章目录
- MySQL权限
- 授予权限
- 查看权限
- 撤销权限
- 权限生效机制
- 访问控制的实现
在实际生产中,为了保证数据的安全,数据库管理人员需要为不同的操作人员分配不同的权限,限制登录MySQL服务器的用户只能在其权限范围内操作。同时管理员还可以根据不同的情况为用户授予权限或撤销权限,从而控制操作人员的权限。
MySQL权限
MySQL的权限系统分为以下三个不同的层级:
- 全局性的权限:针对整个mysql实例。
- 数据库级别的权限:针对某个具体的MySQL数据库。
- 对象级别的权限:针对MySQL数据库中某个具体的数据库对象,如:表、表中的列、存储过程和存储函数等。
MySQL中的权限信息根据其作用范围分别存储在名称为mysql的数据库的不同表中。当MySQL启动时会自动加载这些权限信息,并且将这些权限信息读取到内存中。
| 系统表名称 | 描述 |
|---|---|
| user | 保存用户账号信息和全局权限信息 |
| db | 保存数据库级别的权限信息 |
| tables_priv | 保存表级别的权限信息 |
| columns_priv | 保存列级别的权限信息 |
| procs_priv | 保存存储过程和存储函数相关的权限信息 |
| proxies_priv | 保存代理用户的权限信息 |
查看用户的权限:
mysql> show grants for username@hostname;
MySQL权限可以分为数据权限、结构权限、管理权限。管理员可以为用户授予或撤销权限。
| 分类 | 权限名称 | 权限级别 | 描述 |
|---|---|---|---|
| 数据权限 | INSERT | 全局、数据库、表、列 | 允许插入数据 |
| 数据权限 | DELETE | 全局、数据库、表 | 允许删除数据 |
| 数据权限 | UPDATE全局、数据库、表、列 | 允许更新数据 | |
| 数据权限 | SELECT | 全局、数据库、表、列 | 允许访问数据 |
| 数据权限 | SHOW DATABASES | 全局 | 允许查看已存在的数据库 |
| 数据权限 | SHOW VIEW | 全局、数据库、表 | 允许查看已有视图的视图定义 |
| 数据权限 | PROCESS | 全局 | 允许查看正在运行的线程 |
| 结构权限 | CREATE | 全局、数据库、表 | 允许创建数据库和表 |
| 结构权限 | DROP | 全局、数据库、表 | 允许删除数据库、表和视图 |
| 结构权限 | CREATE ROUTINE | 全局、数据库 | 允许创建存储过程 |
| 结构权限 | CREATE TABLESPACE | 全局 | 允许创建、修改或删除表空间和日志组件 |
| 结构权限 | CREATE TEMPORARY TABLES | 全局、数据库 | 允许创建临时表 |
| 结构权限 | CREATE VIEW | 全局、数据库、表 | 允许创建和修改视图 |
| 结构权限 | ALTER | 全局、数据库、表 | 允许修改数据表 |
| 结构权限 | ALTER ROUTINE | 全局、数据库、存储过程 | 允许修改或删除存储过程 |
| 结构权限 | INDEX | 全局、数据库、表 | 允许创建和删除索引 |
| 结构权限 | TRIGGER | 全局、数据库、表 | 允许触发器的所有操作 |
| 结构权限 | REFERENCES | 全局、数据库、表、列 | 允许创建外键 |
| 管理权限 | SUPER | 全局 | 允许使用其他管理操作,如CHANGE MASTER TO等 |
| 管理权限 | CREATE USER | 全局 | CREATE USER、DROP USER、RENAME USER和REVOKE ALL PRIVILEGES |
| 管理权限 | GRANT OPTION | 全局 | 允许授予或删除用户权限 |
| 管理权限 | RELOAD | 全局 | FLUSH操作 |
| 管理权限 | PROXY | 与被代理的用户权限相同 | |
| 管理权限 | REPLICATION CLIENT | 全局 | 允许用户访问主服务器或从服务器 |
| 管理权限 | REPLICATION SLAVE | 全局 | 允许复制从服务器读取主服务器二进制日志事件 |
| 管理权限 | SHUTDOWN | 全局 | 允许使用mysqladmin shutdown |
| 管理权限 | LOCK TABLES | 全局、数据库 | 允许使用LOCK TABLES锁定拥有SELECT权限的数据库 |
权限级别指权限可以被应用在哪些数据库内容中。
例如,SELECT权限级别是指SELECT权限可以被授予到全局(任意数据库下的任意内容)、数据库(指定数据库下的任意内容)、表(指定数据库下的指定数据库表)、列(指定数据库下的指定数据表中的指定字段)。
授予权限
基本语法:
GRANT 权限名称[(字段列表)][, 权限名称[(字段列表)] ... ] ON 权限级别TO 'username'@'hostname' [, 'username'@'hostname' ... ] [WITH with_option]
- 权限名称:上表中的权限名称
- 字段列表:表示权限设置到哪些字段上。同时给多个字段设置同一个权限时,多个字段名之间使用逗号分隔。如果不指定字段,则设置的权限作用于整个表。
- 权限级别:上表中的权限级别,可以使用下面四种写法
- *.*:表示全局级别的权限,即授予的权限适用于所有数据库和数据库表。
- *:如果当前未选择数据库,表示全局级别的权限;如果当前选择了数据库,则为当前选择的数据库授予权限。
- 数据库名.*:表示数据库级别的权限,即授予的权限适用于指定数据库中的所有表。
- 数据库名.表:表示表级别的权限。如果不指定将授予权限的字段,则授予的权限适用于指定数据库的指定表中的所有列。
- TO子句用于指定一个或多个用户。
- with_option的取值有5个:GRANT OPTION、MAX_QUERIES_PER_HOUR count、MAX_UPDATES_PER_HOUR count、MAX_CONNECTIONS_PER_HOUR count、MAX_USER_CONNECTIONS。
查看权限
tables_priv保存表级别的权限信息,columns_priv保存列级别的权限信息,管理员可以直接查询表看到用户的权限信息。也可以使用SHOW GRANTS语句查看用户权限。基本语法:
SHOW GRANTS FOR 'username'@'hostname';
撤销权限
为保证数据库的安全,对于用户一些不必要的权限应该及时撤销。MySQL提供了REVOKE语句用于撤销用户的权限,其基本语法:
REVOKE 权限名称[(字段列表)] [, 权限名称[(字段列表)] ...] ON 权限级别FROM 'username'@'hostname' [, 'username'@'hostname' ... ]
当撤销的权限比较多时,这种方式就比较烦琐。MySQL还提供了一次性撤销所有权限的功能,基本语法:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'hostname' [, 'username'@'hostname' ... ]
要使用REVOKE语句,必须拥有MySQL数据库的全局CREATE USER权限或UPDATE权限。
USAGE权限只能用于登录MySQL数据库,不能执行其他任何的操作;该权限不能被撤销。
权限生效机制
在MySQL中可以通过两种方式完成授权和撤销权限,但它们的生效机制却不一样。
- 通过GRANT、REVOKE语句对用户进行授权、撤销的操作,权限的修改会立即生效。
- 通过DML语句(insert、update和delete)直接修改权限系统表来完成授权和撤销,需要手动执行
flush privileges语句让MySQL重装装载权限系统表或重启MySQL数据库后,修改才会生效。
当MySQL生效新的权限信息时,对客户端会有以下影响: - 全局性的权限更改和新密码的设置会在下一次客户端连接时生效。
- 数据库级别的权限更改会在下一次使用
USE database_name语句时生效。 - 对象级别的权限更改(如表和列),会在客户端下一次请求该对象时生效。
访问控制的实现
MySQL访问控制实际上由两个功能模块共同完成:用户管理模块、访问控制模块。
用户管理模块主要是验证用户的合法性,验证用户是否能够访问MySQL数据库;而访问控制模块则需要根据权限系统表中存储的权限信息来决定用户的权限。
相关文章:
mysql笔记:14. 权限管理
文章目录 MySQL权限授予权限查看权限撤销权限权限生效机制访问控制的实现 在实际生产中,为了保证数据的安全,数据库管理人员需要为不同的操作人员分配不同的权限,限制登录MySQL服务器的用户只能在其权限范围内操作。同时管理员还可以根据不同…...
无硫防静电手指套:高科技产业的纯净与安全新选择
随着科技的飞速发展,高科技产业对于生产环境的纯净度和产品的防静电要求日益严格。为了满足这一高标准的需求,无硫防静电手指套应运而生,以其独特的无硫特性和出色的防静电功能,迅速成为了高科技产业中的纯净与安全新选择。 无硫手…...
由浅到深认识C语言(10):字符串处理函数
该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…...
防范服务器被攻击:查询IP地址的重要性与方法
在当今数字化时代,服务器扮演着重要的角色,为企业、组织和个人提供各种网络服务。然而,服务器也成为了网络攻击者的目标之一,可能面临各种安全威胁,例如DDoS攻击、恶意软件攻击、数据泄露等。为了有效地防范服务器被攻…...
3. ElasticSearch搜索技术深入与聚合查询实战
1. ES分词器详解 1.1 基本概念 分词器官方称之为文本分析器,顾名思义,是对文本进行分析处理的一种手段,基本处理逻辑为按照预先制定的分词规则,把原始文档分割成若干更小粒度的词项,粒度大小取决于分词器规则。 1.2 …...
【Linux】Shell编程【一】
shell是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell属于内置的…...
Windows10+tensorrt+python部署yolov5
一、安装cuda 打开NVIDIA控制面板 —>帮助—>系统信息—>组件,找到驱动版本新,我这边是11.2, 然后去CUDA Toolkit Archive | NVIDIA Developer下载对应版本的CUDA,根据查看的CUDA型号确定对应的cuda Toolhit版本&#…...
【前端框架的发展史详细介绍】
前端框架的发展史 前端框架的发展史可以追溯到1995年,当时微软推出了IE浏览器并开始支持CSS,随后,在1997年,W3C(万维网联盟)发布了CSS的第一个正式标准。 在2003年,苹果推出了Safari浏览器&am…...
[JAVAEE]—进程和多线程的认识
文章目录 什么是线程什么是进程进程的组成什么是pcb 进程概括线程线程与进程的关系线程的特点 创建线程创建线程方法创建线程的第二种方法对比 其他的方式匿名内部类创建线程匿名内部类创建Runable的子类lambda表达式创建一个线程 多线程的优势 什么是线程 什么是进程 首先想…...
sqllab第十九关通关笔记
知识点: 错误注入 最大长度为32位;如果目标长度>32时,需要利用截取函数进行分段读取referer注入 insert语句update语句 通过admin admin进行登录发现页面打印除了referer字段的信息 这应该是一个referer注入 首先进行测试一下 构造payl…...
张量维度改变总结
文章目录 一、view() 或 reshape()二、unsqueeze()三、squeeze()四、transpose()五、torch.expand_dims 一、view() 或 reshape() view() 或 reshape(): 这两个函数可以用于改变张量的形状,但保持元素总数不变。它们可以接受一个新的形状作为参数,并返回…...
C++ ezOptionParse的用法
在网上找了一下,发现并没有很多关于这个小型头文件的资料 只好自己上了 int main(int argc, const char * argv[]) {ezOptionParser opt;opt.overview "Demo of parsers features."; //概要说明,一般需要填写,简要介绍程序的作用opt.synta…...
MATLAB:一些杂例
a 2; b 5; x 0:pi/40:pi/2; %增量为pi/40 y b*exp(-a*x).*sin(b*x).*(0.012*x.^4-0.15*x.^30.075*x.^22.5*x); %点乘的意义 z y.^2; %点乘的意义 w(:,1) x; %组成w,第一列为x w(:,2) y; %组成w,第二列为y w(:,3) z; %组成w,第三列为z…...
使用OpenCV实现两张图像融合在一起
简单介绍 图像融合技术是一种结合多个不同来源或不同传感器捕获的同一场景的图像数据,以生成一幅更全面、更高质量的单一图像的过程。这种技术广泛应用于遥感、医学影像分析、计算机视觉等多个领域。常见的图像融合技术包括基于像素级、特征级和决策级的融合方法&a…...
PyTorch学习笔记之基础函数篇(十)
文章目录 6 张量操作6.1 torch.reshape()函数6.1 torch.transpose()函数6.1 torch.permute()函数6.1 torch.unsqueez()函数6.1 torch.squeeze()函数6.1 torch.cat()函数6.1 torch.stack()函数 6 张量操作 6.1 torch.reshape()函数 torch.reshape() 是 PyTorch 中的一个函数&a…...
kubernetes部署集群
kubernetes部署集群 集群部署获取镜像安装docker[集群]阿里仓库下载[集群]集群部署[集群]集群环境配置[集群]关闭系统Swap[集群]安装Kubeadm包[集群]配置启动kubelet[集群]配置master节点[master]配置使用网络插件[master]node加入集群[node]后续检查[master]测试集群 集群部署…...
软件工程师,该偿还一下技术债了
概述 在软件开发领域,有一个特殊的概念——“技术债”,它源于Ward Cunningham的一个比喻,主要用来描述那些为了短期利益而选择的快捷方式、临时解决方案或者未完成的工作,它们会在未来产生额外的技术成本。就像金融债务一样&#…...
HTML5、CSS3面试题(三)
HTML5、CSS3面试题(二) rem 适配方法如何计算 HTML 跟字号及适配方案?(必会) 通用方案 1、设置根 font-size:625%(或其它自定的值,但换算规则 1rem 不能小于 12px) 2…...
pytorch之诗词生成6--eval
先上代码: import tensorflow as tf from dataset import tokenizer import settings import utils# 加载训练好的模型 model tf.keras.models.load_model(r"E:\best_model.h5") # 随机生成一首诗 print(utils.generate_random_poetry(tokenizer, model)…...
Django自定义中间件
自定义中间件 传统方法的的五大钩子函数:(需要调用MiddlewareMixin类) process_request,请求刚到来,执行视图之前;正序 process_view,路由转发到视图,执行视图之前;正序…...
Unity UGUI轻量UI框架:200行代码实现零GC界面管理
1. 为什么还要自己手写UI框架?——当UGUI原生方案开始“卡脖子”很多人看到这个标题第一反应是:“都2024年了,还手写UI框架?Asset Store里几十个成熟方案,NGUI、FairyGUI、TextMeshPro配套的UI系统一抓一大把ÿ…...
③ AI副业第一步:如何找到适合自己的AI赚钱赛道
③ AI副业第一步:如何找到适合自己的AI赚钱赛道选对赛道,努力才有意义。选错赛道,越努力离钱越远。前言:为什么大多数人AI副业做不起来? 我观察了100想做AI副业的人,失败的原因高度一致: 失败路…...
2027考研全套资料免费分享
备战27考研最全备考资料整理完毕,一路走来深知备考搜集资料耗费大量时间,浪费不少精力。特意整理2027考研全科完整版资源,全部打包汇总,零基础考生直接拿来就能使用,省去四处搜集资料的烦恼。资料内含:&…...
Unity iOS构建报错SDK version is 0的根因与精准修复
1. 这个报错不是Unity在“发脾气”,而是工程配置在“装死”刚接手一个老项目,打开Unity编辑器,点Build Settings准备打包iOS,结果弹出一行红字:“SDK version is 0, cannot build”。我第一反应是——这什么鬼…...
Vue2-Verify:解决前端验证码安全性与用户体验平衡问题的技术方案实现
Vue2-Verify:解决前端验证码安全性与用户体验平衡问题的技术方案实现 【免费下载链接】vue2-verify vue的验证码插件 项目地址: https://gitcode.com/gh_mirrors/vu/vue2-verify 在当今Web应用开发中,验证码作为防止自动化攻击的关键安全组件&…...
【2025】AWVS安装保姆级教程(最新25.1.2可用)
【2025】AWVS安装保姆级教程(最新25.1.2可用) 文章目录 工具下载Host 重定向AWVS安装AWVS查看安装失败原因 工具下载 点击下载即可 下载完的工具后缀格式为.apk,需要将其改为.zip,然后将其解压得到以下工具后续安装使用 Host 重…...
DAIR-V2X-V数据集深度评测:与KITTI、nuScenes比,它到底强在哪?
DAIR-V2X-V数据集深度评测:与KITTI、nuScenes比,它到底强在哪? 当技术团队着手开发面向中国道路的自动驾驶系统时,数据集的选择往往成为第一个关键决策点。过去十年间,KITTI和nuScenes等国际数据集一直是行业标杆&…...
OpenRASP原理与实战:Java应用层实时防护技术详解
1. 为什么我宁愿花三天部署OpenRASP,也不愿再写第五个自定义WAF过滤器去年冬天,我在给一家做在线教育SaaS平台做安全加固时,连续踩了三个坑:第一次用NginxLua写了套SQL注入规则,结果学生提交的“SELECT * FROM courses…...
Keil µVision反汇编窗口内容导出方案与调试技巧
1. 问题背景与需求解析在嵌入式开发过程中,调试环节往往占据大量时间。Keil Vision作为业界广泛使用的集成开发环境(IDE),其调试器功能强大但某些细节功能仍有提升空间。最近我在使用C251架构开发汽车电子控制单元时,就遇到了一个看似简单却影…...
DIY智能USB充电器:基于电流检测与双稳态继电器的零功耗节能方案
1. 项目概述:打造一款智能、节能的USB手机充电器作为一名电子爱好者,我经常折腾各种电源项目。市面上很多手机充电器,包括一些原装货,都存在一个通病:手机充满电后,充电器依然插在插座上,内部电…...
