У меня есть одна база данных в mysql.
Но когда я вхожу в phpMyAdmin, он показывает другую базу данных, названную information_schema.
Та база данных, всегда дарят одну базу данных?
Я означаю говорить, там копия information_schema для каждой базы данных, существующей в mysql, или там одна база данных, названная inforemation_schema на mysql сервер?
Если я изменяю эту information_schema базу данных, как это будет влиять на мою текущую базу данных?
Вы можете думать о information_schema как о «главной базе данных», которая содержит подробную информацию обо всех других базах данных на сервере, таких как имена и типы таблиц, столбцов и пользователей.
INFORMATION_SCHEMA предоставляет доступ к метаданные базы данных.
Метаданные - это данные о данных, например как имя базы данных или таблицы, тип данных столбца или доступ привилегии. Другие термины, которые иногда для этой информации используются данные словарь и системный каталог.
INFORMATION_SCHEMA - это информация база данных, место, где хранится информация обо всех остальных базы данных, которые сервер MySQL поддерживает. Внутри INFORMATION_SCHEMA есть несколько таблиц только для чтения. Это на самом деле взгляды, а не база таблицы, поэтому нет файлов связанные с ними.
Вы можете увидеть виды вещей, хранящихся в information_schema, и способ их организации, просмотрев эту диаграмму (для MySQL 5.0) или ] эта диаграмма (для MySQL 5.1).
На самом деле, information_schema - это набор представлений, доступных только для чтения. Таким образом, его невозможно изменить и нанести какой-либо ущерб. Однако в MySQL FAQ по этой теме сказано следующее:
23.7.3: Могу ли я добавлять или иным образом изменять таблицы, найденные в INFORMATION_SCHEMA база данных?
Нет. Поскольку приложения могут полагаться на определенная стандартная структура, это не должны быть изменены.Для этого причина, мы не можем поддерживать ошибки или другие проблемы, возникающие в результате изменение таблиц INFORMATION_SCHEMA или данные.
Это означает, что если вы обнаружите, что можете изменить information_schema (что должно быть невозможно, и есть в MySQL, но другие реализации SQL поставщика могут позволить это), вы должны по крайней мере отказаться от этого. Если бы вы могли повредить / изменить information_schema, вы бы повредили фактическую структуру (например, имена таблиц, типы столбцов) других ваших баз данных.
Каждый пользователь может видеть information_schema, относящуюся к таблицам и базам данных, к которым у него есть доступ. Некоторые пользователи с сильно ограниченными правами по-прежнему будут видеть information_schema, но будут видеть только значения NULL для любых запросов information_schema. Однако важно помнить, что information_schema - это не фактическая база данных, а просто удобный способ, который предоставляет SQL, чтобы вы могли выбирать информацию о своих базах данных и таблицах.
Каждый пользователь MySQL имеет право доступ к этим таблицам, но может видеть только строки в таблицах, соответствующие к объектам, для которых у пользователя есть надлежащие права доступа. В некоторых случаи (например, ROUTINE_DEFINITION столбец в INFORMATION_SCHEMA.ROUTINES таблица), пользователи с недостаточными привилегиями увидит NULL.