Система MySQL может содержать много пользователей. Пользователь root из соображений безопасности должен использоваться только для административных целей. Каждый пользователь, которому необходимо работать в системе, должен получить учетную запись и пароль.
Система привилегий MySQL идентифицирует пользователя по имени и сетевому адресу, с которого осуществляется подключение. При поступлении каждого запроса сервер MySQL проверяет, достаточно ли у пользователя привилегий для его выполнения. Например, при считывании строк из таблицы или удалении таблиц из БД сервер в первом случае проверяет, имеется ли у пользователя для этой таблицы привилегия SELECT, а во втором – имеется ли у него для этой базы привилегия DROP.
При определении прав пользователей сервер использует данные таблиц user, db и host из БД mysql. Каждая из этих таблиц включает в себя поля контекста и привилегий.
Поля контекста определяют область действия каждой из записей в таблицах, т. е. контекст, к которому имеет отношение та или иная запись, например, БД или отдельная таблица, для которой устанавливается привилегия.
Поля привилегий определяют доступные действия над данными, заданными контекстом.
1.2 Создание пользователей и задание им прав
Создание (добавление) и удаление учетных записей пользователей производится командой CREATE USER. Синтаксис команды CREATE USER следующий:
CREATE USER <имя пользователя> [IDENTIFIED BY <пароль>];
Удаление учетной записи пользователя производится с помощью команды DROP USER:
DROP USER <имя пользователя>;
Создание (добавление) и удаление учетных записей пользователей, а также назначение им привилегий осуществляется командами GRANT и REVOKE соответственно.
Основные привилегии СУБД MySQL
Название привилегии
Допустимое действие
SELECT
Считывание данных из таблиц
INSERT
Вставка данных в таблицы
UPDATE
Изменение записей в таблицах
DELETE
Удаление записей из таблиц
INDEX
Создание или уничтожение индексов
ALTER
Модификация структуры таблиц
CREATE
Создание таблиц и баз данных
GRANT
Предоставление другим пользователям привилегий, которые имеет пользователь
DROP
FILE
Удаление баз данных или таблиц
Чтение и запись файлов на сервере с помощью команд LOAD INFILE и SELECT OUTFILE
Синтаксис команд GRANT и REVOKE:
GRANT <тип привилегии> [(<столбцы>)] ОN <таблица>TO <имя пользователя> [IDENTIFIED BY <пароль>];REVOKE <тип привилегии> [(<столбцы>)] ON <таблица> FROM <имя пользователя>;
Название таблицы при назначении привилегий пользователю может задаваться в формате <название базы данных>.<таблица>. Если указать в качестве названия БД или таблицы символ *, то это будет означать, что привилегия относится ко всем БД или таблицам.
Имена новых пользователей можно добавить, применяя команду GRANT. Учетная запись пользователя admin с паролем somepass, имеющего полный набор привилегий, с правом локального подключения к серверу создается командой:GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'somepass';Учетная запись пользователя user с паролем userpass, имеющего привилегии выборки, модификации и вставки данных во всех БД, с правом локального подключения к серверу создается командой:mysql> GRANT SELECT, UPDATE, INSERT ON *.* TO user@localhost IDENTIFIED BY 'userpass';
Чтобы обновить настройки привилегий сервера без перезагрузки применяется команда:
FLUSH PRIVILEGES;
Для проверки работы системы привилегий необходимо подключиться к СУБД под именем созданного пользователя:
c:\>mysql –u admin –p
Параметр –p означает необходимость ввода пароля при подключении к серверу.