数据库安全:MySQL权限体系划分与实战操作

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。

在这里插入图片描述

这一章节我们需要知道MySQL的用户权限是如何划分的,怎么修改用户权限。

实际生产环境中,应按照软件安全设计的最小特权原则配置用户权限。

  • 查看权限 show grants for root@localhost;
  • 查看权限 select * from mysql.user where user='root'\G
  • 设置权限 grant select on *.* to test@localhost;
  • 删除权限 revoke select on *.* from test@localhost;

MySQL权限体系

  • 1、权限级别划分
  • 2、权限列表
  • 3、查看用户权限
  • 4、设置用户权限
  • 5、删除用户权限
  • 6、新用户的默认权限
  • 7、实战操作

1、权限级别划分

MySQL用户的权限分为5个级别:全局、库、表、字段、程序和函数。

  1. 全局级别:对整个MySQL服务器的权限。存储在 mysql.user 表中,xx.priv字段表示具体的权限,Y表示有权限,N表示没权限。
  2. 数据库级别:对某个数据库的权限。存储在 mysql.db 表中,xx.priv字段表示具体的权限,Y表示有权限,N表示没权限。
  3. 表级别:对某个表的权限。存储在 mysql.priv 表中,xx.priv字段表示具体的权限,这里不再用YN表示,而是具体的Select、Delete这种。
  4. 字段级别:对某个字段的权限。存储在 columns_priv 表中。
  5. 程序和函数级别:对某个程序或函数的权限。存储在 procs_priv 表中。

权限看起来很复杂,但实际分配权限时却很简单:

  • 设置全局权限,就写成 *.*
  • 设置某个数据库的权限,就写成 database.*
  • 设置某个表的权限,就写成 database.table
  • 设置某个字段的权限,就写成 database.table.column

2、权限列表

  • ALL:所有权限
  • ALTER:可以使用 alter 修改表结构
  • ALTER TOUTINE:可以使用 alter toutine 修改存储过程和函数
  • CREATE:可以使用 create 创建表
  • CREATE ROUTINE:可以使用 create routine 创建存储过程和函数
  • CREATE TEMPORARY TABLES:可以使用 create temporary tables 创建临时表
  • CREATE USER:可以使用 create user、drop user、rename user、revoke all privileges 创建、删除、修改用户。
  • CREATE VIEW:可以使用 create view 创建视图
  • DELETE:可以使用 delete 删除数据
  • DROP:可以使用 drop 删除数据库和表
  • EXECUTE:可以使用 execute 执行存储过程
  • FILE:可以使用 select into outfile 和 load data infile 读写文件
  • INDEX:可以使用 create index 和 drop index 创建和删除索引
  • INSERT:可以使用 insert 插入数据
  • LOCK TABLES:可以对拥有 SELECT 权限的表 使用 lock tables 锁表
  • PROCESS:可以使用 show full processlist 查看服务器的进程信息
  • RELOAD:可以使用 flush 刷新表和日志
  • REPLICATION CLIENT:可以查询主从服务器信息
  • REPLICATION SLAVE:可以从主服务器中读取日志
  • SELECT:可以使用 select 查询数据
  • SHOW DATABASE:可以使用 show database 显示所有数据库
  • SHOW VIEW:可以使用 show create view 显示视图信息
  • SHUTDOWN:可以使用 mysqladmin shutdown 关闭MySQL服务器
  • SUPER:可以使用超级用户操作,包括change master,kill,purge master logs,set global,mysqladmin debug
  • UPDATE:可以使用 update 修改数据
  • USAGE:无权限
  • GRANT OPTION:可以使用 grant 将自己的权限授权给其他用户

3、查看用户权限

方式一:以权限设置记录的形式展示用户权限,多条权限配置可叠加生效。

show grants for root@localhost;

在这里插入图片描述

方式二:只看权限结果。\G可以让每个字段显示为一行。

 select * from mysql.user where user='root'\G

在这里插入图片描述

4、设置用户权限

设置权限的语法格式:

grant select on *.* to test@localhost;
  • grant:设置权限的关键字
  • select:给用户设置的权限
  • on:权限对哪些范围生效,*.* 就是对 所有数据库.所有表 都生效。
  • to:给哪个用户设置权限
  • test@localhost:用户名@主机

5、删除用户权限

删除权限的语法格式:

revoke select on *.* from test@localhost;
  • revoke:删除权限的命令
  • select:删除哪个权限
  • on:删除权限的范围
  • from:删除谁的权限
  • test@localhost:用户名@主机

6、新用户的默认权限

创建一个新用户,可以发现,用户默认是 USAGE 没有权限。

create user test@localhost;
show grants for test@localhost;

在这里插入图片描述

登录进去可以发现,新用户连访问mysql库的权限都没有,也无法创建数据库。

quit
mysql -u test
show database;

在这里插入图片描述

7、实战操作

我们切换root,给新用户加一个SELECT权限

quit
mysql -u root -p1234567
grant select on *.* to test@localhost;
show grants for test@localhost;

在这里插入图片描述

再登录新用户,就能查询所有数据库了。

quit
mysql -u test
show databases;

在这里插入图片描述

再切回root用户,取消新用户的 select,再次查看,可以看到,用户有回到USAGE没有权限的状态了。

quit
mysql -u root -p1234567
revoke select on *.* from test@localhost;
show grants for test@localhost;

在这里插入图片描述

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

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

相关文章

网络基础:OSPF 协议

OSPF(Open Shortest Path First)是一种广泛使用的链路状态路由协议,用于IP网络中的内部网关协议(IGP)。OSPF通过在网络中的所有路由器之间交换路由信息,选择从源到目的地的最优路径。OSPF工作在OSI模型的第…

优化页面加载时间

注:机翻,未校对。 本文年代久远,除了少部分不合时宜的,其他仍有借鉴意义。 Optimizing Page Load Time 优化页面加载时间 It is widely accepted that fast-loading pages improve the user experience. In recent years, many …

【Elasticsearch】Elasticsearch动态映射与静态映射详解

文章目录 📑前言一、Elasticsearch 映射概述1.1 什么是映射?1.2 映射的分类 二、动态映射2.1 动态映射的定义2.2 动态映射的优点2.3 动态映射的缺点2.4 动态映射的应用场景2.5 动态映射的配置示例 三、静态映射3.1 静态映射的定义3.2 静态映射的优点3.3 …

Zookeeper:Zookeeper集群角色

文章目录 一、Leader选举二、Zookeeper集群角色 一、Leader选举 Serverid:服务器ID;比如有三台服务器,编号越大在选择算法中的权重越大。Zxid:数据ID;服务器中存放的最大数据ID,值越大说明数据越新&#x…

JS(JavaScript) 数据校验 正则表达式

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

摸鱼大数据——Spark Core——RDD的基本介绍和如何构建RDD

1、什么是RDD RDD:英文全称Resilient Distributed Dataset,叫做弹性分布式数据集,代表一个不可变、可分区、里面的元素可并行计算的分布式的抽象的数据集合。 Resilient弹性:RDD的数据可以存储在内存或者磁盘当中,RDD…

java常用类(3)

目录 一. 正则表达式 二. Math类 三. Random类 四. Date类 五. Calendar类 六. SimpDateFormate类 七. BigInteger类 八. BigDecimal类 一. 正则表达式 正则表达式(Regular Expression)就是用一些特殊的符号去匹配一个字符串是否符合规则,利用String类中的matches()方…

[Leetcode 136][Easy]-只出现一次的数字

目录 题目描述 具体思路 题目描述 原题链接 具体思路 ①首先看到数组中重复的数字,想到快慢指针,但是数组的元素是乱序的不好求。因此先对数组排序。使用了STL库的sort函数,时间复杂度O(nlogn)不符合题目要求,空间复杂度O(1)。…

KEYSIGHT是德科技 E5063A ENA 系列网络分析仪

E5063A ENA 矢量网络分析仪 18GHz 2端口 降低无源射频元器件的测试成本 Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪,可用于测试简单的无源元器件,例如频率最高达到 18 GHz 的天线、滤波器、电缆或连接器。 作为业界闻名的 ENA 系列…

打卡第一天

今天是参加算法训练营的第一天,希望我能把这个训练营坚持下来,希望我的算法编程题的能力有所提升,不再面试挂了,面试总是挂编程题,记录我leetcode刷题数量: 希望我通过这个训练营能够实现两份工作的无缝衔接…

用720云搭建数字孪生VR智慧安防系统,赋能安防升级!

“安全防范"一直是我国城镇化发展进程中重点关注的工作板块,随着时代发展需求与科技的日新月异,安防行业正在积极融合VR3D数字孪生技术,升级安防数字基础设施和安防产品服务创新。 今年2月,《数字中国建设整体布局规划》的出…

docker容器间网络仿真工具-pumba

docker-tc&pumba docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预,包括延迟,丢包,带宽限制等。 但是我在实际使用时,发现docker-tc这个工具在进行网络进行模…

如何使用python网络爬虫批量获取公共资源数据教程?

原文链接:如何使用python网络爬虫批量获取公共资源数据教程?https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608240&idx4&snef281f66727afabfaae2066c6e92f792&chksmfa826657cdf5ef41571115328a09b9d34367d8b11415d5a5781dc4c…

84 柱状图中最大的矩形

题目 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 输入:heights [2,1,5,6,2,3] 输出:10 解释:最大的矩…

从全连接到卷积

一、全连接到卷积 1、卷积具有两个原则: 平移不变性:无论作用在哪个部分,它都要有相同的作用,而不会随着位置的改变而改变 局部性:卷积核作用处,作用域应该是核作用点的周围一小部分而不作用于更大的部分 …

【无需公网IP】在树莓派上搭建Web站点

目录 1.概述 2.使用 Raspberry Pi Imager 安装 Raspberry Pi OS 3.设置 Apache Web 服务器 3.1测试 web 站点 3.2安装静态样例站点 3.3将web站点发布到公网 3.4安装 Cpolar 3.5cpolar进行token认证 3.6生成cpolar随机域名网址 3.7生成cpolar二级子域名 3.8将参数保存…

linux 下,Java由Java8升级到Java11,Java不更新版本号

在ES对接过程,springboot3进行对接,需要将Java升级到11版本。首先下载安装选好的11版本Java,在linux下解压后,配置/etc/profile export JAVA_HOME/root/SJL/jdk-11.0.22 然后保存,执行文件source /etc/profile&#…

Linux多进程和多线程(一)-进程的概念和创建

进程 进程的概念进程的特点如下进程和程序的区别LINUX进程管理 getpid()getppid() 进程的地址空间虚拟地址和物理地址进程状态管理进程相关命令 ps toppstreekill 进程的创建 并发和并行fork() 父子进程执行不同的任务创建多个进程 进程的退出 exit()和_exit() exit()函数让当…

【机器学习】机器学习与电商推荐系统的融合应用与性能优化新探索

文章目录 引言第一章:机器学习在电商推荐系统中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 特征工程 1.2 模型选择1.2.1 协同过滤1.2.2 矩阵分解1.2.3 基于内容的推荐1.2.4 混合推荐 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化器 …

根据后端返回的省市区重新封装树结构(省市区通过children表示)

对比图(截取部分): 注:先看分步,最后会附上完整代码(如果有用,可以给小编点个赞吗?十分感谢) 1.首先将前端返回相同的省份只展示一次 const obj {}; let keyList []r…