返回

挖掘MySQL8新特性注入秘笈:数据库安全攻防的利器

前端

MySQL 8 是当今最流行的关系型数据库管理系统 (RDBMS) 之一,凭借其出色的性能和可靠性,在众多行业和领域备受欢迎。然而,随着黑客技术日益精进,针对 MySQL 数据库的攻击也变得更加频繁和复杂。了解 MySQL 8 的新特性及其在注入攻击中的应用,对于保障数据库安全至关重要。

一、新增表information_schema.TABLESPACES_EXTENSIONS

information_schema.TABLESPACES_EXTENSIONS 是 MySQL 8 中新增的一张表,它存储了数据库和数据表的信息,包括表空间名称、表空间大小、表空间类型等。

1.information_schema.TABLESPACES_EXTENSIONS表结构

CREATE TABLE `information_schema`.`TABLESPACES_EXTENSIONS` (
  `TABLESPACE_NAME` VARCHAR(64) NOT NULL,
  `ENGINE` VARCHAR(64) NULL DEFAULT NULL,
  `TABLESPACE_TYPE` VARCHAR(64) NULL DEFAULT NULL,
  `FLAGS` VARCHAR(64) NULL DEFAULT NULL,
  `EXTENT_SIZE` BIGINT UNSIGNED NULL DEFAULT NULL,
  `AUTOEXTEND_SIZE` BIGINT UNSIGNED NULL DEFAULT NULL,
  `MAX_SIZE` BIGINT UNSIGNED NULL DEFAULT NULL,
  `ALLOCATED_SIZE` BIGINT UNSIGNED NULL DEFAULT NULL,
  `DATA_FREE` BIGINT UNSIGNED NULL DEFAULT NULL,
  `INDEX_FREE` BIGINT UNSIGNED NULL DEFAULT NULL,
  `ROW_FORMAT` VARCHAR(64) NULL DEFAULT NULL,
  `CREATE_OPTIONS` VARCHAR(256) NULL DEFAULT NULL,
  `TABLESPACE_COMMENT` VARCHAR(2048) NULL DEFAULT NULL,
  `VERSION` BIGINT UNSIGNED NULL DEFAULT NULL,
  `ROW_COUNT` BIGINT UNSIGNED NULL DEFAULT NULL,
  `DATA_LENGTH` BIGINT UNSIGNED NULL DEFAULT NULL,
  `INDEX_LENGTH` BIGINT UNSIGNED NULL DEFAULT NULL,
  `DATA_FREE_EXTENT_COUNT` BIGINT UNSIGNED NULL DEFAULT NULL,
  `INDEX_FREE_EXTENT_COUNT` BIGINT UNSIGNED NULL DEFAULT NULL,
  `TOTAL_EXTENT_COUNT` BIGINT UNSIGNED NULL DEFAULT NULL,
  `FILE_SIZE` BIGINT UNSIGNED NULL DEFAULT NULL,
  `FILE_FREE` BIGINT UNSIGNED NULL DEFAULT NULL,
  `FRAGMENTATION` DECIMAL(4,4) NULL DEFAULT NULL,
  `DATA_VERSION` VARCHAR(64) NULL DEFAULT NULL,
  PRIMARY KEY (`TABLESPACE_NAME`)
) ENGINE=InnoDB

2.information_schema.TABLESPACES_EXTENSIONS表字段说明

  • TABLESPACE_NAME:表空间名称。
  • ENGINE:表空间使用的存储引擎。
  • TABLESPACE_TYPE:表空间的类型。
  • FLAGS:表空间的标志位。
  • EXTENT_SIZE:表空间的扩展大小。
  • AUTOEXTEND_SIZE:表空间的自动扩展大小。
  • MAX_SIZE:表空间的最大大小。
  • ALLOCATED_SIZE:表空间已分配的大小。
  • DATA_FREE:表空间中空闲的数据空间大小。
  • INDEX_FREE:表空间中空闲的索引空间大小。
  • ROW_FORMAT:表空间中表使用的行格式。
  • CREATE_OPTIONS:表空间创建时使用的选项。
  • TABLESPACE_COMMENT:表空间的注释。
  • VERSION:表空间的版本号。
  • ROW_COUNT:表空间中表的行数。
  • DATA_LENGTH:表空间中表的数据大小。
  • INDEX_LENGTH:表空间中表的索引大小。
  • DATA_FREE_EXTENT_COUNT:表空间中空闲的数据区段数。
  • INDEX_FREE_EXTENT_COUNT:表空间中空闲的索引区段数。
  • TOTAL_EXTENT_COUNT:表空间中的总区段数。
  • FILE_SIZE:表空间文件的大小。
  • FILE_FREE:表空间文件中空闲的空间大小。
  • FRAGMENTATION:表空间的碎片率。
  • DATA_VERSION:表空间数据文件的版本号。

二、performance_schema

performance_schema 是 MySQL 8 中新增的一个数据库,它包含了大量的性能相关信息,包括线程状态、查询状态、表锁信息等。

1.performance_schema数据库表

  • threads:包含所有正在运行的线程的信息。
  • mutexes:包含所有互斥锁的信息。
  • events_waits:包含所有等待事件的信息。
  • tables:包含所有表的性能信息。
  • file_summary_by_event_name:包含所有文件操作的性能信息。
  • table_io_waits:包含所有表IO操作等待的信息。
  • table_lock_waits:包含所有表锁等待的信息。
  • sql_statements:包含所有SQL语句的性能信息。
  • prepared_statements:包含所有预处理语句的信息。
  • metadata_locks:包含所有元数据锁的信息。

2.performance_schema数据库表字段

  • THREAD_ID:线程ID。
  • USER:线程使用的用户。
  • HOST:线程连接的主机。
  • DB:线程连接的数据库。
  • COMMAND:线程正在执行的命令。
  • TIME:线程执行命令的时间。
  • STATE:线程的状态。
  • INFO:线程的详细信息。
  • MUTEX_NAME:互斥锁的名称。
  • OWNER_THREAD_ID:拥有互斥锁的线程ID。
  • WAITING_THREAD_ID:等待互斥锁的线程ID。
  • WAIT_TIME:等待互斥锁的时间。
  • WAIT_CLASS:等待互斥锁的类型。
  • EVENT_NAME:等待事件的名称。
  • COUNT_STAR:等待事件的发生次数。
  • SUM_TIMER_WAIT:等待事件的总等待时间。
  • MIN_TIMER_WAIT:等待事件的最小等待时间。
  • MAX_TIMER_WAIT:等待事件的最大等待时间。
  • AVG_TIMER_WAIT:等待事件的平均等待时间.
  • TABLE_SCHEMA:表的架构。
  • TABLE_NAME:表的名称。
  • TABLE_TYPE:表的类型。
  • ROWS_READ:表中读取的行数。
  • ROWS_CHANGED:表中更改的行数。
  • ROWS_DELETED:表中删除的行数。
  • COMMITS:表中提交的事务数。
  • ROLLBACKS:表中回滚的事务数。
  • FILE_NAME:文件的名称。
  • EVENT_NAME:文件操作的事件名称。
  • COUNT_READ:文件读取的次数。
  • SUM_TIMER_READ:文件读取的总时间。
  • MIN_TIMER_READ:文件读取的最小时间。
  • MAX_TIMER_READ:文件读取的最大时间.