Чтобы работать с базами данных в MySQL необходим пользователь, который будет наделен такими правами.
При подключении к базе данных пользователь должен указать логин и пароль. Если доступ пользователю открыт, то он получает определенные права.
Права пользователя в MySQL
В MySQL существует 3 группы прав доступа (привилегий):
- данные – право, которое позволяет изменять записи в таблицах;
- структура – право, позволяющее изменять структуру базы данных;
- администрирование – привилегия на администрирование базы данных.
Рассмотрим каждую группу отдельно.
Право на управление данными в таблицах
- SELECT – право, позволяющее делать выборку записей из таблиц базы данных.
- INSERT – право, позволяющее добавлять новые записи в таблицу.
- UPDATE – привилегия на обновление записей в таблице.
- DELETE – право на удаление записей из таблицы.
- FILE – позволяет делать выборку записей, помещать в файл и считывать данные из него.
Право на изменение структуры таблицы и базы данных
- CREATE – право, позволяющее создавать новую базу данных и новые таблицы в ней.
- ALTER – право, которое позволяет переименовывать таблицы, выполнять вставку новых полей в таблицу, удаление полей из таблицы и их изменение.
- INDEX – право на создание индекса по определённому полю и его удаление.
- DROP – право на удаление таблиц и целых баз данных.
- CREATE TEMPORARY TABLES – право на создание хранящихся во время сессии временных таблиц, после окончания которой данная таблица удаляется автоматически.
Права, связанные с администрированием базы данных
- ALL PRIVILEGES – привилегия предоставляет пользователю все права.
- GRANT – право на создание новых пользователей и изменение прав существующих пользователей. Обратим внимание, что пользователь с этим правом не может изменить значение привилегии, которой сам не обладает. Например, если у пользователя есть право GRANT, но нет права UPDATE, то он не может дать новым пользователям право UPDATE.
- SUPER – право на использование команды kill – убить поток. Потоком называют текущее подключение какого-либо пользователя к БД.
- PROCESS – право на выполнение команды processlist (составляет список потоков).
- RELOAD – право на открытие и закрытие файлов журналов, а также на перечитывание таблицы прав пользователей.
- SHUTDOWN – право на выполнение команды shutdown (отключает работу сервера).
- SHOW DATABASES - разрешает просматривать все существующие базы данных.
- LOCK TABLES – право на блокирование таблиц от указанных потоков.
- EXECUTE – право на запуск хранимых процедур.
- REPLICATION CLIENT – привилегия, позволяющая получить местонахождение ведущего (master) и ведомого (slaves) сервера.
- REPLICATION SLAVE – право на чтение журнала ведущего сервера ведомым сервером.
Специальные права, которые связаны с ограничением на доступные ресурсы
- MAX QUERIES PER HOUR – определяет максимальное число запросов, которое позволено отправить пользователю в час.
- MAX UPDATES PER HOUR – определяет максимальное число команд в час, которые любым образом модифицируют таблицу или базу данных.
- MAX CONNECTIONS PER HOUR – определяет максимальное число подключений, которое может выполнить пользователь в час.
Если значения указанных пределов равны нулю, то ресурсы пользователя являются не ограниченными.
Привилегий у пользователей MySQL достаточное количество, особенно их много у группы, связанной с администрированием.
Около 95% сайтов, которые используют MySQL, нет необходимости настройки привилегий. Для них является достаточным иметь одного пользователя со всеми правами.