MySQL用户授权、收回权限与查看权限

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客


《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

MySQL9数据库技术_夏天又到了的博客-CSDN博客

MySQL新建和删除普通用户-CSDN博客

13.3.2  授权

授权就是为某个用户授予权限。合理的授权可以保证数据库的安全。MySQL中可以使用GRANT语句为用户授予权限。授予的权限可以分为以下5个层级:

1. 全局层级

全局权限适用于一个给定服务器中的所有数据库。这些权限存储在MySQL.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。

2. 数据库层级

数据库权限适用于一个给定数据库中的所有目标。这些权限存储在MySQL.db和MySQL.host表中。GRANT ALL ON db_name.和REVOKE ALL ON db_name.*只授予和撤销数据库权限。

3. 表层级

表权限适用于一个给定表中的所有列。这些权限存储在MySQL.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。

4. 列层级

列权限适用于一个给定表中的单一列。这些权限存储在MySQL.columns_priv表中。当使用REVOKE时,必须指定与被授权列相同的列。

5. 子程序层级

CREATE ROUTINE、ALTER ROUTINE、EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。除了CREATE ROUTINE之外,这些权限还可以被授予子程序层级,并存储在MySQL.procs_priv表中。CREATE ROUTINE、ALTER ROUTINE、EXECUTE和GRANT权限用于管理已存储的子程序。这些权限可以被授予为全局层级(GLOBAL)和数据库层级(DATABASE)。

除了CREATE ROUTINE 权限外,其他权限(ALTER ROUTINE、EXECUTE和GRANT)还可以被授予子程序层级(PROCEDURE),并存储在MySQL.procs_priv表中。

在MySQL中,要使用GRANT或REVOKE,必须拥有GRANT OPTION权限,并且必须用于正在授予或撤销的权限。GRANT的语法如下:

GRANT priv_type [(columns)] [, priv_type [(columns)]] ...ON [object_type]  table1, table2,…, tablenTO user  [WITH GRANT OPTION]object_type = TABLE  |  FUNCTION  |  PROCEDURE

其中,priv_type参数表示权限类型;columns参数表示权限作用于哪些列上,不指定该参数,表示作用于整张表;table1,table2,…,tablen表示授予权限的列所在的表;object_type指定授权作用的对象类型包括TABLE(表)、FUNCTION(函数)和PROCEDURE(存储过程),当从旧版本的MySQL升级时,要使用object_tpye子句,必须升级授权表;user参数表示用户账户,由用户名和主机名构成,形式是“'username'@'hostname'”。

WITH关键字后可以跟一个或多个with_option参数。这个参数有5个选项,意义如下:

(1)GRANT OPTION:被授权的用户可以将这些权限赋予别的用户。

(2)MAX_QUERIES_PER_HOUR count:设置每小时可以执行count次查询。

(3)MAX_UPDATES_PER_HOUR count:设置每小时可以执行count次更新。

(4)MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立count个连接。

(5)MAX_USER_CONNECTIONS count:设置单个用户可以同时建立count个连接。

【例13.9】创建一个新的用户grantUser。使用GRANT语句对用户grantUser赋予所有的表进行数据的查询、插入权限,并授于GRANT权限。GRANT语句及其执行结果如下:

MySQL> CREATE USER 'grantUser'@'localhost' IDENTIFIED BY 'mypass';MySQL> GRANT SELECT,INSERT ON *.* TO 'grantUser'@'localhost' WITH GRANT OPTION;Query OK, 0 rows affected (0.03 sec)

结果显示执行成功。使用SELECT语句查询用户grantUser的权限:

MySQL> SELECT Host,User,Select_priv,Insert_priv, Grant_priv FROM mysql.user where user='grantUser';
+-----------+------------+-------------+--------------+-------------+
| Host      | User       | Select_priv | Insert_priv  | Grant_priv  |
+-----------+------------+-------------+--------------+-------------+
| localhost | grantUser  | Y           | Y            | Y           |
+-----------+------------+-------------+--------------+-------------+
1 row in set (0.00 sec)

查询结果显示用户grantUser被创建成功,并被赋予SELECT、INSERT和GRANT权限,其相应字段值均为“Y”。被授予GRANT权限的用户可以登录MySQL并创建其他用户账户。

13.3.3  收回权限

收回权限就是将赋予用户的某些权限取消。收回用户不必要的权限,可以在一定程度上保证系统的安全性。MySQL中使用REVOKE语句取消用户拥有的某些权限。使用REVOKE收回权限之后,用户账户的记录将从db、host、tables_priv和columns_priv表中删除,但是仍然在user表中保存(删除user表中的账户记录,要使用DROP USER语句,在13.2.3节已经介绍)。

在将用户账户从user表中删除之前,应该收回相应用户的所有权限。REVOKE语句有两种语法格式。

(1)第一种是收回所有用户的所有权限,用于取消已命名用户的所有全局层级、数据库层级、表层级和列层级的权限,具体如下:

REVOKE ALL PRIVILEGES, GRANT OPTIONFROM 'user'@'host' [, 'user'@'host' ...]

REVOKE语句必须和FROM语句一起使用。FROM语句指明需要收回权限的账户。

(2)第二种为长格式的REVOKE语句,基本语法如下:

REVOKE priv_type [(columns)] [, priv_type [(columns)]] ...ON  table1, table2,…, tablenFROM 'user'@'host'[, 'user'@ 'host' ...]

该语法收回指定的权限。其中,priv_type参数表示权限类型;columns参数表示权限作用于哪些列上,如果不指定该参数,则表示作用于整张表;table1,table2,…,tablen表示从哪张表中收回权限;'user'@'host'参数表示用户账户,由用户名和主机名构成。

要使用REVOKE语句,必须拥有MySQL数据库的全局CREATE USER权限或UPDATE权限。

【例13.11】使用REVOKE语句取消用户grantUser的查询权限。REVOKE语句及其执行结果如下:

MySQL> REVOKE Select ON *.* FROM 'grantUser'@'localhost';Query OK, 0 rows affected (0.00 sec)

执行结果显示执行成功。使用SELECT语句查询用户grantUser的权限:

mysql> SELECT Host,User,Select_priv,Insert_priv,Grant_priv FROM MySQL.user where user='grantUser';
+-----------+-----------+-------------+-------------+------------+
| Host      | User      | Select_priv | Insert_priv | Grant_priv |
+-----------+-----------+-------------+-------------+------------+
| localhost | grantUser | N           | Y           | Y          |
+-----------+-----------+-------------+-------------+------------+

查询结果显示用户grantUser的Select_priv字段值为“N”,说明SELECT权限已经被收回。

13.3.4  查看权限

使用SHOW GRANTS语句可以显示指定用户的权限信息,基本语法格式如下:

SHOW GRANTS FOR 'user'@ 'host' ;

其中,user表示登录用户的名称,host表示登录的主机名称或者IP地址。在使用该语句时,要确保指定的用户名和主机名都要用单引号引起来,并使用“@”符号将两个名字分隔开。

【例13.12】使用SHOW GRANTS语句查询用户grantUser的权限信息。SHOW GRANTS语句及其执行结果如下:

MySQL> SHOW GRANTS FOR 'grantUser'@'localhost';
+------------------------------------------------------------------+
| Grants for grantUser@localhost                                   |
+------------------------------------------------------------------+
| GRANT INSERT ON *.* TO `grantUser`@`localhost` WITH GRANT OPTION |
+------------------------------------------------------------------+

返回的结果显示了grantUser表中的账户信息。接下来的行以“GRANT INSERT ON”关键字开头,表示用户被授予了INSERT权限;*.*表示INSERT权限作用于所有数据库的所有数据表。

在这里,只是定义了个别的用户权限,GRANT可以显示更加详细的权限信息,包括全局级的和非全局级的权限,如果表层级或者列层级的权限被授予用户,那么它们也能在结果中显示出来。

在前面创建用户时,查看新建的账户使用的是SELECT语句,也可以通过SELECT语句查看user表中的各个权限字段以确定用户的权限信息,其基本语法格式如下:

SELECT privileges_list FROM user WHERE user='username', host= 'hostname';

其中,privileges_list为想要查看的权限字段,可以为Select_priv、Insert_priv等。读者可以根据需要选择要查询的字段。

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

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

相关文章

XML实体注入漏洞攻与防

JAVA中的XXE攻防 回显型 无回显型 cve-2014-3574

996引擎 - NPC-添加NPC引擎自带形象

996引擎 - NPC-添加NPC引擎自带形象 截图参考添加NPC参考资料截图参考 添加NPC 编辑NPC表:Envir\DATA\cfg_npclist.xls 1.1. 需要临时隐藏NPC时可以在id前加 // 1.2. 如果NPC朝向不对,可以调整dir 列。(按8方向,上是0顺时针数。我这里给的4) 1.3. 形象代码:NPC代码、怪物…

云计算架构学习之LNMP架构部署、架构拆分、负载均衡-会话保持

一.LNMP架构部署 1.1. LNMP服务搭建 1.磁盘信息 2.内存 3.负载信息 4.Nginx你们公司都用来干嘛 5.文件句柄(文件描述符 打开文件最大数量) 6.你处理过系统中的漏洞吗 SSH漏洞 7.你写过什么shell脚本 8.监控通过什么告警 zabbix 具体监控哪些内容 9.mysql redis查询 你好H…

C语言程序设计:算法程序的灵魂

文章目录 C语言程序设计:算法程序的灵魂算法数据结构程序数据结构算法数值运算算法非数值运算算法 简单的算法举例【例2.1】求12345【例2.2】有50个学生,要求输出成绩在80分以上的学生的学号和成绩 简单的算法举例【例2.3】判定2000—2500年中的每一年是…

Python 在Word中添加、或删除超链接

在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超链接,用户可以轻松地导航到相关信息,从而增强文档的互动性和可读性。本文将介绍如何使用Python在Word中添加超链接、或删除Word文档中的超…

概率论里的特征函数,如何用卷积定理去理解

概率论里的特征函数,如何用卷积定理去理解_哔哩哔哩_bilibili

Unity入门1

安装之后无法获得许可证,可以考虑重装 新建项目 单击空白处生成脚本 双击c#文件 会自动打开vstudio 检查引用 如果没有引用,重开vstu,或者重新加载项目 hierarchy层级 scenes场景 assets资产 inspector督察 icon图标 资源链接&…

如何跨互联网adb连接到远程手机-蓝牙电话集中维护

如何跨互联网adb连接到远程手机-蓝牙电话集中维护 --ADB连接专题 一、前言 随便找一个手机,安装一个App并简单设置一下,就可以跨互联网的ADB连接到这个手机,从而远程操控这个手机做各种操作。你敢相信吗?而这正是本篇想要描述的…

单片机基础模块学习——按键

一、按键原理图 当把跳线帽J5放在右侧,属于独立按键模式(BTN模式),放在左侧为矩阵键盘模式(KBD模式) 整体结构是一端接地,一端接控制引脚 之前提到的都是使用了GPIO-准双向口的输出功能&#x…

第25篇 基于ARM A9处理器用C语言实现中断<一>

Q:怎样理解基于ARM A9处理器用C语言实现中断的过程呢? A:同样以一段使用C语言实现中断的主程序为例介绍,和汇编语言实现中断一样这段代码也使用了定时器中断和按键中断。执行该主程序会在DE1-SoC的红色LED上显示流水灯&#xf…

Baklib如何提升企业的内容管理效率与协作能力

内容概要 在现代企业中,内容管理的有效性直接影响到工作效率、团队协作和创新能力。随着信息量的不断增加,企业亟需一个系统化的平台来高效处理和管理这些内容。Baklib作为一款先进的内容管理平台,通过其丰富的功能和灵活的应用场景&#xf…

【2024年终总结】深圳工作生活评测

距离上次写年终总结已经过了一年半了,这一年半中哪怕经历了很多的事情,但是感觉又没发生什么。想写一些骚话,却总觉得自己无法完全表达,便也就这样,静静地记录下这一段时光。 现在是2025年,春节前的时光&am…

【算法】分治

分治 1.逆序对2.求第 k 小的数3.最大子段和4.地毯填补问题 分治,字面上的解释是「分而治之」,就是把一个复杂的问题分成两个或更多的相同的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 1.逆序对 P…

Vue2官网教程查漏补缺学习笔记 - 3Vue实例4模板语法5计算属性监听器

3 Vue实例 3.1 创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm new Vue({// 选项 })虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的缩写) 这个变…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验六----流域综合处理(超超超详细!!!)

流域综合处理 流域综合治理是根据流域自然和社会经济状况及区域国民经济发展的要求,以流域水流失治理为中心,以提高生态经济效益和社会经济持续发展为目标,以基本农田优化结构和高效利用及植被建设为重点,建立具有水土保持兼高效生态经济功能的半山区流域综合治理模式。数字高程…

对于RocksDB和LSM Tree的一些理解

LSM Tree的读写过程 HBase、LevelDB,rocksDB(是一个引擎)底层的数据结构是LSM Tree适合写多读少的场景,都是追加写入内存中的MemTable,写入一条删除(或修改)标记,而不用去访问实际的…

枚举与模拟 练习

练习题基于《C/C程序设计竞赛真题实战特训教程(图解版)》 目录 1.1 卡片 题目描述 代码实现 题解笔记 总评 注意点 重点解释 1.2 回文日期 题目描述 输入描述 输出描述 代码实现 题解笔记 总评 注意点 重点解释 1.1 卡片 题目描述 小蓝…

Linux第103步_了解I2C总线框架

了解Linux中的I2C总线框架为后面做I2C实验做准备,学驱动,就是学习框架,了解是必须的。 1、了解Linux下的I2C子系统中的相关数据结构 struct i2c_adapter { struct module *owner; unsigned int class; /* classes to allow probing for …

AAAI2024论文合集解读|Physics-Informed Representation and Learning Control and Risk

论文标题 Physics-Informed Representation and Learning: Control and Risk Quantification 物理信息表征与学习:控制与风险量化 论文链接 Physics-Informed Representation and Learning: Control and Risk Quantification论文下载 论文作者 Zhuoyuan Wang, …

【JavaEE进阶】Spring留言板实现

目录 🎍预期结果 🍀前端代码 🎄约定前后端交互接口 🚩需求分析 🚩接口定义 🌳实现服务器端代码 🚩lombok介绍 🚩代码实现 🌴运行测试 🎄前端代码实…