一、什么是information_schema
information_schema提供了对数据库元数据、统计信息以及有关MySQL Server信息的访问(例如:数据库名或表名、字段的数据类型和访问权限等)。该库中保存的信息也可以称为MySQL的数据字典或系统目录。
在MySQL中通过使用show往往可以和通过查询information_schema库下的表得到类似的数据信息,但是通过select查询有以下优点
符合‘codd法则’,所有访问都是基于表实现的。
通过select查询可以方便进行数据的过滤、排序、联结等操作。
和其它数据库中的操作具有互操作性。
访问information_schema的权限
所有用户都有访问information_schema下的表权限(但只能看到这些表中与用户具有访问权限的对象相对应的数据行),但只能访问Server层的部分数据字典表。Server层的部分数据字典表以及InnoDB层的数据字典表需要额外授权才能访问,如果用户权限不足,当查询Server层的数据字典表时将不会返回任何数据,或者对某个列没有权限访问时,该列返回NULL值;当查询InnoDB层的数据字典表时将直接拒绝访问
从information_schema中查询相关数据需要的权限也适用于SHOW语句。无论使用哪种查询方式,都必须拥有访问某个对象的权限才能看到相关的数据。
二、information_schema组成对象
information_schema系统库下的表都是使用的memory和innodb存储引擎,而且都是临时表不是持久的,所有的数据在数据库重启后都会消失。information_schema也是唯一一个系统文件中没有对应库表目录和文件的系统库。