首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >information_schema数据库代表什么?

问information_schema数据库代表什么?
EN

Stack Overflow用户
提问于 2010-06-16 09:49:53
回答 1查看 27.6K关注 0票数 26

我在mysql中有一个数据库。

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

该数据库是否始终只有一个数据库?

我的意思是,mysql中的每个数据库都有一个information_schema的副本,还是每个mysql服务器都有一个名为inforemation_schema的数据库?

如果我修改这个information_schema数据库,会对我当前数据库有什么影响?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-16 09:51:59

您可以将information_schema看作一个“主数据库”,它保存了服务器上所有其他数据库的详细信息,比如表、列和用户的名称和类型。

什么是information_schema?

来自the reference documentation:

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

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

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

information_schema中存储了什么内容?

通过查看information_schema (适用于MySQL 5.0)或this diagram (适用于MySQL 5.1),您可以查看存储在this diagram中的内容类型以及它们的组织方式。

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

实际上,information_schema是一个只读视图的集合。因此,修改它并造成任何破坏是不可能的。然而,the MySQL FAQ on this topic有这样的说法:

23.7.3:是否可以添加或修改在INFORMATION_SCHEMA数据库中找到的表?

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

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

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

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

来自the reference documentation:

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

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

(http://dev.mysql.com/doc/refman/5.0/en/information-schema.html)

上的

  • MySQL参考手册文章information_schema MySQL常见问题解答文章
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3050225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档