Дополнительные сведения по администрированию MySQL
Подробное ознакомление с системой полномочий
В главе 9 был описан процесс определения пользователей и предоставления им полномочий. Для предоставления полномочий служит команда GRANT. Если вы собираетесь выполнять действия по администрированию базы данных MySQL, полезно знать, что именно выполняет эта команда и как из нее извлечь максимальную пользу.
Выполнение оператора GRANT оказывает влияние на таблицы в специальной базе данных с именем mysql. Информация о полномочиях хранится в пяти таблицах этой базы данных. Учитывая этот факт, при выдаче полномочий для работы с базами данных следует с осторожностью предоставлять доступ к базе данных mysql.
По ходу дела заметим, что команда GRANT стала доступна, начиная с версии MySQL 3.22.11.
Просмотреть содержимое базы данных mysql можно, входя в систему в качестве ! администратора и набрав следующую команду:
После этого таблицы в этой базе данных можно просматривать как обычно, с помощью команды: ‘
show tables;
Результат выполнения команды будет выглядеть подобно показанному ниже:
Каждая из таблиц этой базы данных содержит системную информацию. Пять из них — user, host, db, tables_priv и columns_priv — хранят информацию о полномочиях. Иногда их называют таблицами полномочий. Эти таблицы различаются своими специфическими функциями, но все они служат одной общей цели определения того, какие действия разрешено выполнять пользователям, а какие запрещено. Каждая из них содержит два типа полей: поля области действия, определяющие пользователя, хост и часть базы данных, к которым применимы данные полномочия, и поля полномочий, которые определяют действия, разрешенные данному пользователю в данной области действия.
Таблицы user и host служат для определения того, может ли пользователь вообще подключаться к серверу MySQL, а также того, обладает ли он полномочиями администратора. Таблицы db и host определяют базы данных, к которым пользователь может получать доступ. Таблица tables_priv определяет доступные для пользователя таблицы внутри базы данных, а таблица columns_priv — доступные столбцы внутри таблиц.
Таблица user
Таблица user содержит сведения о глобальных полномочиях пользователей. Она определяет, может ли пользователь вообще подключаться к серверу the MySQL, и то, предоставлены ли ему какие-либо полномочия глобального уровня — то есть полномочия, применимые к каждой базе данных в системе.
Структуру этой таблицы можно просмотреть с помощью оператора describe user;. Схема таблицы user представлена в табл. 12.1.
Каждая строка в этой таблице соответствует набору полномочий, предоставленных пользователю User, входящему в систему с хоста Host с паролем Password. В данной таблице эти поля представляют собой поля области действия, поскольку они описывают область действия других полей, называющихся полями полномочий.
Полномочия, перечисленные в этой таблице (и последующих), соответствуют полномочиям, выдаваемым с помощью команды GRANT, которая описана в главе 9. Например, Select_priv соответствует полномочиям на выполнение команды SELECT.
Если пользователь располагает конкретными полномочиями, значение в соответствующем столбце будет равно Y. И наоборот, если данные полномочия не предоставлены, значение будет равно N.
Все полномочия, перечисленные в таблице user — глобальные, то есть они применяются ко всем базам данных в системе (включая базу данных mysql). Следовательно, для администраторов некоторые значения будут установлены равными Y, но для большинства пользователей все значения должны быть равными N. Обычные пользователи должны располагать правами доступа к соответствующим базам данных, а не] ко всем таблицам.