=========================================================================
首先,我们先来认识一下MySQL的「默认数据库」,如下图:
MySQL初始安装时,会携带一些默认的数据库,这些数据库用来存储MySQL的相关信息:
-
information_schema:保存具体数据库的信息,比如MySQL有哪些数据库,库里有哪些表,表里有哪些字段。
-
mysql:保存数据库的权限信息,比如哪个用户可以访问哪个表。
-
performance_schema:保存数据库的性能参数。
-
sys:数据源自performance_schema,目的在于降低数据库的复杂度。
对我们来说,比较重要的有两个数据库:information_schema、mysql。
===========================================================================
这里给大家普及一个非常重要的概念:「一库三表六字段」。
顾名思义,就是一个数据库、三个表、六个字段。
「一库」是指 information_schema 库,这个库是脱库的核心库。
为什么叫它核心库呢?因为它里面有三个非常重要的表。
「三表」是指 information_schema 库里的三个表:
-
schemata 表:存放所有数据库信息
-
tables 表:存放所有表信息
-
columns 表:存放所有字段信息
「六字段」是指 三表中的六个关键字段:
-
schemata表的 schema_name 字段:存放具体的数据库名
-
tables表的 table_name 字段:存放具体的表名
-
tables表的 table_schema 字段:存放表所在的数据库
-
columns表的 column_name 字段:存放具体的字段名
-
columns表的 table_name 字段:存放字段所在的表名
-
columns表的 table_schema 字段:存放字段所在的数据库名
为了方便记忆,我们把它整理成脑图:
这是个概念性的东西,建议大家牢牢记住,接下来我们来讲解一下脱库的具体步骤。
========================================================================
脱库总共分三步:
-
爆库
-
爆表
-
爆字段
回到文章开头的问题,我们想要查询校花的个人信息,首先得知道这些个人信息存放在哪个数据库吧。
如果我们知道了网站中所有的数据库名字的话,能不能根据库名来判断哪个数据库是存放个人信息的呢?
这个爆破MySQL所有数据库名字的操作,就叫「爆库」。
information_schema 库的 schemata 表的 schema_name 字段存放了所有数据库的名字,我们查询这个表,就能拿到所有库名:
select schema_name from information_schema.schemata;
从下图的查询结果中可以看到,我们查到了所有的库名,其中有个叫 user 的数据库,初步判断这个库用来保存用户信息。
确定数据库以后,我们肯定要知道这个库里面有哪些表。
获取数据库中所有表名的操作,就叫「爆表」。
information_schema 库的 tables 表的 table_name 和 table_schema 字段分别保存表名和表所在的库名,我们查询这个表,就能拿到数据库中的所有表名:
select table_name from information_schema.tables where table_schema = ‘user’;
如图,我们拿到了 user 库中的所有表名。
实际上,拿到表名后,我们就可以查询表中的数据了,但实际注入中,由于一些原因,比如联合查询只能查询固定个数的字段,这时候我们就需要知道表中有哪些字段。
information_schema 库的 columns 表的 column_name、table_name、table_schema 字段分别保存字段名、字段所在表名、字段所在的库名,查询这个表,我们就能拿到表中的所有字段名:
select column_name from information_schema.columns where table_name = ‘student’ and table_schema = ‘user’;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/baf47c812cc908a14fa28484cb0fbb56.jpeg)
最后
文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。**
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!