information_schema数据库代表什么?

22 mysql5 information-schema

我在mysql中有一个数据库.

但是当我登录phpMyAdmin时,它会显示另一个名为information_schema的数据库.

该数据库是否始终存在于一个数据库中?

我的意思是说mysql中存在的每个数据库都有一个information_schema的副本,或者每个mysql服务器有一个名为inforemation_schema的数据库吗?

如果我修改这个information_schema数据库将如何影响我当前的数据库?

Mat*_*ell 27

您可以将information_schema视为"主数据库",其中包含有关服务器上所有其他数据库的详细信息,例如表,列和用户的名称和类型.

什么是information_schema?

参考文档:

INFORMATION_SCHEMA提供对数据库元数据的访问.

元数据是有关数据的数据,例如数据库或表的名称,列的数据类型或访问权限.有时用于此信息的其他术语是数据字典和系统目录.

INFORMATION_SCHEMA是信息数据库,存储有关MySQL服务器维护的所有其他数据库的信息的位置.在INFORMATION_SCHEMA中,有几个只读表.它们实际上是视图,而不是基表,因此没有与之关联的文件.

information_schema中存储了什么?

通过查看此图(对于MySQL 5.0)或此图(对于MySQL 5.1),您可以查看information_schema中存储的各种事物及其组织方式.

如果我修改information_schema会发生什么?

实际上,information_schema是只读视图的集合.因此,应该无法对其进行修改并造成任何损害.但是,关于这个主题的MySQL FAQ有这样的说法:

23.7.3:我可以添加或修改INFORMATION_SCHEMA数据库中的表吗?

不可以.由于应用程序可能依赖于某种标准结构,因此不应对其进行修改.因此,我们无法支持因修改INFORMATION_SCHEMA表或数据而导致的错误或其他问题.

这意味着如果你确实发现自己能够修改information_schema(这应该是不可能的,并且在MySQL中,但SQL的其他供应商实现可能允许它),你至少应该选择不这样做.如果您可能损坏/修改information_schema,则会损坏其他数据库的实际结构(例如表名,列类型).

每个用户都有自己的information_schema副本吗?

每个用户都可以看到与他们有权访问的表和数据库有关的information_schema.权限非常有限的某些用户仍会看到information_schema,但只会看到任何information_schema查询的NULL值.但是,重要的是要记住,information_schema不是一个实际的数据库,而只是SQL提供的一种方便的方式,以便您可以选择有关数据库和表的信息.

参考文档:

每个MySQL用户都有权访问这些表,但只能看到表中与用户具有适当访问权限的对象相对应的行.在某些情况下(例如,INFORMATION_SCHEMA.ROUTINES表中的ROUTINE_DEFINITION列),权限不足的用户将看到NULL.

我在哪里可以找到更多信息?