Система привилегий MySQL обеспечивает пользователям возможность выполнять только те действия, которые им разрешены в соответствии с их обязанностями. При попытке пользователя совершить действие с БД выполняется проверка на соответствие его прав запрошенному действию. В случае отрицательного результата проверки выполнение действия запрещается.
Система привилегий MySQL идентифицирует пользователя по имени и сетевому адресу, с которого осуществляется подключение.
При поступлении каждого запроса сервер MySQL проверяет, достаточно ли у пользователя привилегий для его выполнения. Например, при считывании строк из таблицы или удалении таблиц из БД сервер в первом случае проверяет, имеется ли у пользователя для этой таблицы привилегия SELECT, а во втором – имеется ли у него для этой базы привилегия DROP.
При определении прав пользователей сервер использует данные таблиц user, db и host из БД mysql. Каждая из этих таблиц включает в себя поля контекста и привилегий.
Поля контекста определяют область действия каждой из записей в таблицах, т. е. контекст, к которому имеет отношение та или иная запись, например, БД или отдельная таблица, для которой устанавливается привилегия.
Поля привилегий определяют доступные действия над данными, заданными контекстом.
Основные привилегии сервера MySQL приведены табл. 1.
Таблица 1
Основные привилегии СУБД MySQL
Название привилегии
| Допустимое действие
|
SELECT
| Считывание данных из таблиц
|
INSERT
| Вставка данных в таблицы
|
UPDATE
| Изменение записей в таблицах
|
DELETE
| Удаление записей из таблиц
|
INDEX
| Создание или уничтожение индексов
|
ALTER
| Модификация структуры таблиц
|
CREATE
| Создание таблиц и баз данных
|
GRANT
| Предоставление другим пользователям привилегий, которые имеет пользователь
|
FILE
| Чтение и запись файлов на сервере с помощью команд LOAD INFILE и SELECT OUTFILE
|