Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

Права пользователей в MySQL

Раздел: 

В MySQL есть несколько видов прав пользователей (привилегий), убирая или добавляя которые администратор может регулировать что сможет делать человек на сервере.

Привилегии проверяются сервером после запуска или в случае использования операторов, дающих ему указание заново считать информацию о правах пользователей.

Информация о правах содержится в БД mysql (название базы данных, а не языка) в таблицах ser, db, host,tables_priv и columns_priv.

Рассмотрим основные виды привелегий:

Управление и правка данных в БД

К этой группе относят привилегии имеющие отношение к взаимодействию со строками таблиц в БД:

  • SELECT — позволяет выбирать записи из таблиц. Предоставляется зачастую при наличии необходимости у пользователя извлекать столбцы из таблицы. Простое использование оператора SELECT возможно даже без наличия каких-либо привилегий. Пример: проведение простейших вычислений:
    mysql> SELECT 1+1;
    mysql> SELECT PI()*2;
  • INSERT — у нас появляется возможность добавлять записи в ранее созданные таблицы.
  • UPDATE — позволяет обновлять данные в таблицах.
  • DELETE — не трудно догадаться, что эта привилегия позволяет удалять данные из ранее созданных таблиц.

Работа с файлами на сервере

  • FILE - позволяет пользователю получить доступ к файлам на сервере, выбирать их, считывать и записывать в них информацию. С ее предоставлением следует быть осторожными, поскольку человек с ней может считать информацию содержащуюся внутри любого файла, каким засекреченным он бы ни был.

Управление и изменение структуры баз данных

Эта группа прав дает возможность пользователям работать со структурой таблиц. К примеру, у него появляется возможность добавлять и удалять поля и тд. Рассмотрим их подробнее:

  • CREATE — возможность создавать новые таблицы и БД.
  • ALTER — возможность изменять имена таблиц, добавлять и убирать их поля. Опасность этого права состоит в том, что пользователь может через изменения имен разрушить всю систему привилегий на сайте.
  • INDEX — позволяет стирать поля в таблицах подходящие под заданные условия.
  • DROP — удаление таблиц и БД. Стоит ли говорить, что попав не в те руки, данная привилегия может стать причиной потери всей информации?
  • CREATE TEMPORARY TABLES — создание специальной категории таблиц, которые хранят в себе данные во время работы с БД и стираются автоматически после завершения рабочей сессии.

Администрирование

  • GRANT — право на создание новых пользователей. Не смотря на существующее ограничение (прав у созданного пользователя не может быть больше, чем у того, который его создал) у гранта есть особенность, к которой следует относиться внимательно: несколько юзеров обладающих не одинаковыми правами, имея в наличии GRANT способны объединить их.
  • SUPER — позволяет отключать пользователей от БД командой kill.
  • PROCESS — позволяет просматривать соединения пользователей с БД. Обращаю внимание, что сюда попадают и запросы связанные с установкой и изменением паролей.
  • RELOAD — позволяет проводить очистку таблиц, получать доступ к файлам журналов, заставлять сервер считать заново права пользователей.
  • SHUTDOWN — полное выключение сервера.
  • SHOW DATABASES — право на просмотр всех располагающихся на сервере БД.
  • REFERENCES — дает возможность настраивать связи в базах данных.
  • LOCK TABLES — дает возможность производить блокирование таблицы таблицы в случае подключения к ней определенного юзера.
  • EXECUTE — дает возможность пуска процедур.
  • REPLICATION CLIENT — предоставляет возможность ее обладателю узнать расположение серверов (как главного, так и связанных с ним).
  • REPLICATION SLAVE — позволяет настраивать репликацию (дублирование изменений внесенных на главном сервере на локальные).

Специальные привилегии

  • MAX QUERIES PER HOUR — это ограничение количества запросов направляемых на сервер пользователем в час.
  • MAX UPDATES PER HOUR — лимит на количество команд по работе над таблицами или БД одним или несколькими юзерами в час.
  • MAX CONNECTIONS PER HOUR — позволяет задать ограничения числа подключений пользователя к серверу в час.

Полезно знать

  • Располагая доступами к БД mysql мы можем работать с записями хранящими информацию о привелегиях, со всеми вытекающими (смена паролей пользователей, их имен, прав и тд.). В столбце mysql.user хранится вся информация о пользователях и паролях. Тот кто имеет к нему доступ, может заходить на сервер ипользуя любые логины и пароли.
  • У нас нет возможности ограничить доступ к серверу конкретному пользователю используя стандартную систему привилегий.
  • Права на создание и удаление таблиц в БД и самих баз данных не разграничены. Тобишь если человек может удалить таблицу, то он может удалить и саму БД.