返回
挖掘MySQL8新特性注入秘笈:数据库安全攻防的利器
前端
2023-10-09 00:30:14
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:文件读取的最大时间.