Что представляет information_schema база данных?

У меня есть одна база данных в mysql.

Но когда я вхожу в phpMyAdmin, он показывает другую базу данных, названную information_schema.

Та база данных, всегда дарят одну базу данных?

Я означаю говорить, там копия information_schema для каждой базы данных, существующей в mysql, или там одна база данных, названная inforemation_schema на mysql сервер?

Если я изменяю эту information_schema базу данных, как это будет влиять на мою текущую базу данных?

21
задан Matt Mitchell 16 June 2010 в 01:56
поделиться

1 ответ

Вы можете думать о information_schema как о «главной базе данных», которая содержит подробную информацию обо всех других базах данных на сервере, таких как имена и типы таблиц, столбцов и пользователей.

Что такое information_schema?

Из справочной документации:

INFORMATION_SCHEMA предоставляет доступ к метаданные базы данных.

Метаданные - это данные о данных, например как имя базы данных или таблицы, тип данных столбца или доступ привилегии. Другие термины, которые иногда для этой информации используются данные словарь и системный каталог.

INFORMATION_SCHEMA - это информация база данных, место, где хранится информация обо всех остальных базы данных, которые сервер MySQL поддерживает. Внутри INFORMATION_SCHEMA есть несколько таблиц только для чтения. Это на самом деле взгляды, а не база таблицы, поэтому нет файлов связанные с ними.

Что хранится в information_schema?

Вы можете увидеть виды вещей, хранящихся в information_schema, и способ их организации, просмотрев эту диаграмму (для MySQL 5.0) или ] эта диаграмма (для MySQL 5.1).

Что произойдет, если я изменю 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, но будут видеть только значения NULL для любых запросов information_schema. Однако важно помнить, что information_schema - это не фактическая база данных, а просто удобный способ, который предоставляет SQL, чтобы вы могли выбирать информацию о своих базах данных и таблицах.

Из справочной документации:

Каждый пользователь MySQL имеет право доступ к этим таблицам, но может видеть только строки в таблицах, соответствующие к объектам, для которых у пользователя есть надлежащие права доступа. В некоторых случаи (например, ROUTINE_DEFINITION столбец в INFORMATION_SCHEMA.ROUTINES таблица), пользователи с недостаточными привилегиями увидит NULL.

Где я могу найти дополнительную информацию?

27
ответ дан 29 November 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: