# Права для пользователей

<https://vps.ua/wiki/install-linux-vps/databases/mysql/mysql-privileges/>

Существует некоторое количество привилегий в системе БД MySQL которые указаны ниже с описанием. Последние привилегии являются привилегиями администраторского уровня, что явно указано лишь для справки. Полная информация о правах/привилегиях доступна в [документации разработчика MySQL](http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html):.

**CREATE** — позволяет создавать новые базы данных и таблицы.

**DROP** — позволяет удалять базы данных или таблицы.

**INSERT** — позволяет добавлять строки к таблице.

**UPDATE** — позволяет изменять содержание строк таблиц. Не путать с ALTER, которая позволяет изменять саму структуру таблиц (количество строк/столбцов, типы столбцов).

**DELETE** — противоположна INSERT — позволяет удалять строки из таблицы.

**ALTER** — позволяет изменять структуру таблиц. Требует CREATE и INSERT привилегии.

**SELECT** — позволяет читать (выводит строки) таблицы, используя выборки по столбцам и/или по некоторым арифметическим и логическим критериям.

**GRANT OPTION** — позволяет назначить конкретные права определенному пользователю (также и отобрать). Возможно дать/отобрать только те права, которыми назначающий сам располагает.

**LOCK TABLES** — блокирует таблицу на время искусственного внесения в нее изменений (администрирование), чтобы данные внутри нее не могли измениться своим естественным путем (во время рабочего процесса).

**REFERENCES** — позволяет создавать связь между таблицами по внешнему ключу.

**EVENT** — дает право на создание/изменение/удаление заданий для планировщика.

**TRIGGER** — позволяет создавать/изменять/удалять триггеры (привязываемые к определенным таблицам), которые при выполнении операций DELETE, UPDATE или **INSERT** совершают дополнительные действия.

**INDEX** — привилегия даёт право добавлять/удалять индексы к (из) таблицам. Сами индексы назначаются вручную, и дают возможность сэкономить время на поиске строк.

**CREATE TEMPORARY TABLES** — позволяет создавать временные таблицы на время сессии.

**CREATE VIEW** — позволяет создать некоторое представление в виде таблицы, которая фактически не существует как единая и содержит лишь данные других таблиц. К примеру, в этом представлении можно собрать определенные сгруппированные данные из трёх таблиц (оператором SELECT) и по факту собранные данные будут лишь ссылаться на данные этих 3-х таблиц и также будут объединением, не нуждающимся в собственной таблице.

**SHOW VIEW** — позволяет проверить каким запросом (из каких данных состоит) создано определенное представление, заданное с помощью CREATE VIEW.

**CREATE ROUTINE** — позволяет создать процедуру, которая является набором заготовленным набором SQL-команд.

**ALTER ROUTINE** — позволяет изменить процедуру, созданную посредством CREATE **ROUTINE**.

**EXECUTE** — позволяет вызывать готовые процедуры.

**FILE** — предоставляет доступ на чтение любого файла на сервере, к которому есть доступ у самой системы MySQL и доступ на создание файла в директориях, на которые у MySQL есть права записи.

**CREATE TABLESPACE** (admin) — позволяет создавать/изменять/удалять пространства таблиц. Само это пространство является логическим и не связано со структурой БД или схемой. Оно декларирует расположение объектов БД на физических носителях и используется для оптимизации системы БД.

**CREATE USER** (admin) — позволяет создавать/изменять/переименовывать/удалять пользователей баз данных.

**PROCESS** (admin) — разрешает доступ к информации о потоках (процессах) исполняющихся на сервере.

**PROXY** (admin) — позволяет войти пользователем под видом другого пользователя. Используется администратором для проверки/отладки прав доступа у необходимого пользователя.

**RELOAD** (admin) — разрешает использование оператора FLUSH, который чистит кеш MySQL.

**REPLICATION CLIENT** (admin) — позволяет выполнять операции SHOW MASTER STATUS, SHOW SLAVE STATUS и SHOW BINARY LOG.

**REPLICATION SLAVE** (admin) — данная привилегия необходима пользователям ведомого сервера БД, чтобы этот сервер мог подключаться к ведущему серверу в роли ведомого. Без этой привилегии ведомые сервера не смогут запрашивать обновления баз данных и таблиц у ведущего сервера.

**SHOW DATABASES** (admin) — позволяет выполнять оператор SHOW DATABASES. Пользователи, не имеющие подобной привилегии, при выполнении данного оператора смогут лишь увидеть базы данных к которым у них есть какие-либо права.

**SHUTDOWN** (admin) — привилегия позволяет выполнить оператор SHUTDOWN, выключающий MySQL сервер.

**SUPER** (admin) — привилегия, дающая право на множество операций:.

* позволяет завершить процессы, принадлежащие другим пользователям
* изменить глобальные системные переменные
* включать/отключать логирование
* производить обновления даже при установленных правах на чтение для системных переменных
* запускать/останавливать репликации на ведомых серверах
* и пр.

**ALL** (admin) — пользователю, получившему данную привилегию, автоматически назначаются все права в рамках уровня привилегий (возможных привилегий в принципе, согласно контексту выдачи привилегий). Не назначается только привилегия **GRANT OPTION** в данном случае.
