SQL注入之MySQL数据库

数据库就是一个存储数据的仓库,数据库是以一定方式存储在一起,能与多个用户共享,具有尽可能小的冗余,与应用程序彼此独立的数据集合。

关系型数据库,存储的格式可以直观地反映实体间的关系,和常见的Excel表格比较相似。

数据库服务器层级关系

  • 多个数据库
  • 多个数据表
  • 多个行、列、字段
  • 多条数据

MySQL结构

MySQL系统库

提供了访问数据库元数据的方式。

元数据是关于数据库的数据,如数据库名和表名,列的数据类型或访问权限。

MySQL元数据

information_schema

信息数据库,保存着关于MySQL服务器所维护的所有其他数据库的信息;

例如:数据库或表的名称,列的数据类型或访问权限。有时用于此信息的其他术语是数据字典和系统目录。在Web渗透过程中用途很大。

1
2
3
4
5
SCHEMATA 表:提供了当前MySQL实例中所有数据库信息,show databases结果来自此表。

TABLES表:提供了关于数据中表的信息。table_name是关键字段。

COLUMNS表:提供了表的列信息,详细描述了某张表的所有列以及每个列的信息。column_name是关键字段。

information_schema库

performance_schema

MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,具有87张表,主要用于收集数据库服务器性能参数。

内存数据库,数据放在内存中直接操作的数据库。

相对于磁盘,内存的数据读写速度要高出几个数量级。

mysql

是核心数据库,类似于sql server中的master表,主要负责存储数据库的用户(账户)信息、权限设置、关键字等mysql自己需要使用的控制和管理信息。

不可以删除,如果对mysql不是很了解,也不要轻易修改这个数据库里面的表信息。

常用举例:在mysql.user表中存储着用户的密码。

sys

是MySQL5.7增加的系统数据库,这个库是通过视图的形式把information_schema和performance_schema结合起来,查询出更加令人容易理解的数据,具有1个表,100个视图。

这个库可以查询谁使用了最多的资源,哪张表访问最多等。