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数据库;而访问控制模块则需要根据权限系统表中存储的权限信息来决定用户的权限。

访问控制模块
用户管理模块
逐个验证权限系统表
客户端请求执行SQL语句
SQL语句执行成功
匹配成功
SQL语句被拒绝
匹配失败
验证请求连接
客户端请求连接
权限系统表mysql.user
客户端连接被拒绝
验证失败
验证通过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金三银四,风控建模面试高频问题大全

随着春天的到来,招聘市场的“金三银四”也悄然而至。公众号的小伙伴问我有没有面试相关指导课程,上完课后,把整理的部分材料通过文章分享给更多有需要的朋友。预祝大家顺利获得心仪的职位。 文章目录 一、建模经验高频面试问题1.简单描述风控建模流程:2.请谈谈在过去风控建…

药用植物与生药学试卷

1【单选题】以下不属于植物特有的细胞器是 C A、细胞壁 B、叶绿体 C、高尔基体 D、液泡 2【单选题】四强雄蕊的雄蕊数目是 A A、6个 B、4 C、2个 D、8个 3【单选题】根类药材采收时期通常是 A A、秋季至次年早春植株开始生长时期 B、开花前或果实成熟前 C、花开放…

【物联网】Modbus 协议简介

Modbus 协议简介 QingHub设计器在设计物联网数据采集时不可避免的需要针对Modbus协议的设备做相关数据采集,这里就我们的实际项目经验分享Modbus协议 你可以通过QingHub作业直接体验试用,也可以根据手册开发相应的代码块。 qinghub项目已经全面开源。 …

认清趋势的力量!北大请摆摊鹅姨做演讲!阿伟告白失败,AI有资格做僚机?——早读(逆天打工人爬取热门微信文章解读)

趋势的力量,AWSL 引言Python 代码第一篇 人民日报 【夜读】最好的伯乐,是努力的自己第二篇 来啦新闻早班车要闻社会政策 结尾 “识时务者为俊杰,通机变者为英豪” 生活中,我们如骑行者穿越车水马龙 察觉人潮车流的趋势 不论体能优…

DCAI:Data-Centric AI 以数据为中心的AI

1. 什么是DCAI? 1.1. 当下的研究背景 想象当中的数据集:通常是干净且精选的(例如猫或狗的图片)。 猫就是猫,狗就是狗 实际现实生活中的数据集:非常混乱~ https://labelerrors.com/ 比如这个网站里提供了一些人们常用的开源数据集…

产品推荐 - ALINX XILINX FPGA开发板 Artix-7 XC7A100T-2FGG484I

01开发板介绍 此款开发板采用核心板扩展板的模式,方便用户对核心板的二次开发利用。FPGA使用的是Xilinx公司的ARTIX-7系列的芯片,型号为XC7A100T-2FGG484I。在核心板使用了2片MICRON公司的MT41J256M16HA-125 DDR3芯片,组合成32bit的数据总线…

栈的应用——括号匹配

用栈实现 1、初始化一个栈,用来存左括号 2、遍历扫描括号字符串 如果遇到左括号,无脑入栈如果遇到右括号,此时栈空返回false,不空的话进行括号匹配。匹配不成功返回false,匹配成功将栈顶的那个左括号出栈。 遍历完之后…

MongoDB聚合运算符:$firstN

文章目录 语法使用空值或缺失值的处理 f i r s t N 与 firstN与 firstN与topN对比关于窗口功能和聚合表达式的支持内存限制 举例查找单场比赛的前三名运动员得分查找多场比赛中前三名运动员的得分 s o r t 与 sort与 sort与firstN一起使用根据group的键计算n在聚合表达式中使用…

Git中的换行符CRLF和LF问题

目录 第一章、问题分析1.1)Git报错提示1.2)报错分析 第二章、解决方式2.1)在Windows上开发并需要与Unix或macOS上的开发人员协作2.1)在Unix或macOS开发并需要与Windows上的开发人员协作2.3)不需要与其他操作系统的开发…

【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’

【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’ 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希…

Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️本系列源码仓库:多线程并发编程学习的多个代码片段(github) 🏷️个人学习笔记,若有缺误,欢迎评论区指正…

C++笔记:从零开始一步步手撕高阶数据结构AVL树

文章目录 高度平衡二叉搜索树实现一颗AVL树结点与树的描述——定义类AVL树的插入操作步骤1:按照二叉搜索树的方法插入结点步骤2:自底向上调整平衡因子步骤3:触发旋转操作(AVL树平衡的精髓)右单旋左单旋左右双旋右左双旋…

TSINGSEE青犀视频AI方案:数据+算力+算法,人工智能的三大基石

背景分析 随着信息技术的迅猛发展,人工智能(AI)已经逐渐渗透到我们生活的各个领域,从智能家居到自动驾驶,从医疗诊断到金融风控,AI的应用正在改变着我们的生活方式。而数据、算法和算力,正是构成…

【矩阵】48. 旋转图像【中等】

旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,…

开源大数据集群部署(十六)Hadoop集群部署(一)

作者:櫰木 按照上文中hadoop集群规划进行安装。 1 HADOOP集群安装 在hd1.dtstack.com主机root权限下安装hadoop集群 解压 [roothd1.dtstack.com software]# tar -zvxf hadoop-3.2.4.tar.gz -C /opt/ [roothd1.dtstack.com software]# chown -R hdfs:hadoop /opt…

基于伪逆的三点法测距,MATLAB源代码(MATLAB函数)

程序介绍 这是一个函数,输入距离和已知点位置,输出未知点的位置。 已知点三个,未知点一个,已知点和未知点的距离也是有三个。 完整源代码 function [p_out] triposition(R_calcu,baseP) % p [5,5;10,9;15,12;20,22;25,3]; %r…

rust学习笔记(1-7)

原文 8万字带你入门Rust 1.包管理工具Cargo 新建项目 1)打开 cmd 输入命令查看 cargo 版本 cargo --version2) 使用 cargo new 项目名 在文件夹,按 shift 鼠标右键 ,打开命令行,运行如下命令,即可创建…

python-1星-可变参数

可变参数是指在函数调用时,可以传入任意数量的参数。 在Python中,可用*args表示可变参数,args是一个元组类型,存储了传入的所有参数。 1、1个星(*)说明: 1)单星号 2)…

基于springboot的七彩云南文化旅游网站的设计与实现(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装七彩云南文化旅游网站软件来发挥其高效地信息处理的作用&am…

5.82 BCC工具之tcpdrop.py解读

一,工具简介 tcpdrop工具打印被内核丢弃的 TCP 数据包或段的详细信息,包括导致丢弃的内核堆栈跟踪。 当网络出现拥堵、资源不足或其他原因导致数据包被内核丢弃时,tcpdrop可以帮助开发者和网络管理员识别并定位问题。 该工具通过钩住内核中处理TCP数据包的相关函数,捕获…