Grant/Revoke привилегии MySQL

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

Описание

Вы можете использовать привилегии GRANT и REVOKE для различных объектов базы данных в MySQL. Затем вы можете просмотреть привилегии, назначенные пользователю, используя команду SHOW GRANTS. Мы рассмотрим, как предоставлять и отменять привилегии для таблиц, функций и процедур в MySQL.

Grant привилегии на таблицу

Вы можете предоставить пользователям различные привилегии для таблиц. Эти разрешения могут быть любой комбинацией SELECT, INSERT, UPDATE, DELETE, INDEX, CREATE, ALTER, DROP, GRANT OPTION или ALL.

Синтаксис

Синтаксис предоставления привилегий для таблицы в MySQL:

GRANT privileges ON object TO user;

privileges - это может быть любое из следующих значений:

Привилегии Описание
SELECT Возможность выполнения операторов SELECT для таблицы.
INSERT Возможность выполнения операторов INSERT для таблицы.
UPDATE Возможность выполнения операторов UPDATE для таблицы.
DELETE Возможность выполнения операторов DELETE для таблицы.
INDEX Возможность создания индекса в существующей таблице.
CREATE Возможность выполнять оператор CREATE TABLE.
ALTER Возможность выполнять оператор ALTER TABLE для изменения определения таблицы.
DROP Возможность выполнения операторов DROP TABLE.
GRANT OPTION Позволяет предоставлять права, которыми вы обладаете для других пользователей.
ALL Предоставляет все разрешения, кроме GRANT OPTION.

object - имя объекта базы данных, для которого вы предоставляете разрешения. В случае предоставления привилегий в таблице это будет имя таблицы.
user - имя пользователя, которому будут предоставлены эти привилегии.

Пример

Рассмотрим некоторые примеры предоставления привилегий на таблицу в MySQL.
Например, если вы хотите предоставить привилегии SELECT, INSERT, UPDATE и DELETE в таблице contacts, с именем пользователя adam, вы должны запустить следующий оператор GRANT:

Вы также можете использовать ключевое слово ALL, чтобы указать, что вы хотите предоставить все разрешения, кроме GRANT OPTION, пользователю с именем 'adam'.
Например:

Если вы хотите предоставить только доступ SELECT в таблице contacts всем пользователям, вы можете предоставить привилегии *.
Например:

Отменить привилегии на таблицу

Как только вы предоставили привилегии, вам может потребоваться отменить некоторые или все эти привилегии. Для этого вы можете запустить команду отмены. Вы можете отменить любую комбинацию SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER или ALL.

Синтаксис

Синтаксис отмены привилегий на таблицу в MySQL:

REVOKE privileges ON object FROM user;

privileges - это может быть любое из следующих значений:

Привилегии Описание
SELECT Возможность выполнения операторов SELECT для таблицы.
INSERT Возможность выполнения операторов INSERT для таблицы.
UPDATE Возможность выполнения операторов UPDATE для таблицы.
DELETE Возможность выполнения операторов DELETE для таблицы.
INDEX Возможность создания индекса в существующей таблице.
CREATE Возможность выполнять оператор CREATE TABLE.
ALTER Возможность выполнять оператор ALTER TABLE для изменения определения таблицы.
DROP Возможность выполнения операторов DROP TABLE.
GRANT OPTION Позволяет предоставлять права, которыми вы обладаете для других пользователей.
ALL Предоставляет все разрешения, кроме GRANT OPTION.

object - имя объекта базы данных, для которого вы отменяете привилегии. В случае отмены привилегий для таблицы это будет имя таблицы.
user - имя пользователя, у которого будут отменены эти привилегии.

Пример

Рассмотрим некоторые примеры отмены привилегий на таблицу в MySQL.

Например, если вы хотите отменить привилегии DELETE и UPDATE в таблице contacts пользователю с именем adam, вы должны запустить следующий оператор REVOKE:

Если вы хотите отменить все разрешения (кроме GRANT OPTION) в таблице для пользователя с именем adam, вы можете использовать ключевое слово ALL следующим образом:

Если вы предоставляли привилегии SELECT для * (т.е. всех пользователей) в таблице contacts, и вы хотели бы отменить эти привилегии, вы можете запустить следующий оператор REVOKE:

Предоставить привилегии на функции / процедуры

При работе с функциями и процедурами вы можете предоставить пользователям возможность ИСПОЛНЕНИЯ этих функций и процедур в MySQL.

Синтаксис

Синтаксис предоставления привилегий EXECUTE для функции / процедуры в MySQL:

GRANT EXECUTE ON [ PROCEDURE | FUNCTION ] object TO user;

EXECUTE - возможность выполнения функции или процедуры.
PROCEDURE - используется, когда привилегия предоставляется процедуре в MySQL.
FUNCTION - используется, когда привилегия предоставляется для функции в MySQL.
object - имя объекта базы данных, для которого предоставляются привилегии. В случае предоставления привилегий EXECUTE для функции или процедуры это будет имя функции или имя процедуры.
user - имя пользователя, которому будут предоставлены привилегии EXECUTE.

Пример - функция

Рассмотрим некоторые примеры того, как предоставить привилегии EXECUTE для функции в MySQL.

Например, если у вас есть функция GetBestPrice и вы хотите предоставить EXECUTE доступ к пользователю с именем trizor, то вы должны запустить следующий оператор GRANT:

Если вы хотите предоставить всем пользователям возможность ВЫПОЛНИТЬ эту функцию, вы должны выполнить следующий оператор GRANT:

Пример - процедура

Рассмотрим некоторые примеры того, как предоставить привилегии EXECUTE для процедуры в MySQL.

Например, если у вас была процедура с именем MySqlProc и вы хотели предоставить EXECUTE доступ к пользователю с именем trizor, то вы должны выполнить следующий оператор GRANT:

Если вы хотите предоставить всем пользователям возможность выполнять эту процедуру, то вы должны выполнить следующий оператор GRANT:

Отменить привилегии для функций/процедур

После того, как вы предоставили привилегии EXECUTE для функции или процедуры, вам может потребоваться отменить эти привилегии пользователю в MySQL. Для этого вы можете выполнить команду REVOKE.

Синтаксис

Синтаксис для отмены привилегии на функцию или процедуру в MySQL:

REVOKE EXECUTE ON [ PROCEDURE | FUNCTION ] object FROM user;

EXECUTE - возможность выполнять функцию или процедуру отменяется.
PROCEDURE - используется, когда отменяется привилегия для процедуры в MySQL.
FUNCTION - используется, когда отменяется привилегия для функции в MySQL.
object - имя объекта базы данных, для которого вы отменяете привилегии. В случае отмены привилегий EXECUTE для функции или процедуры это будет имя функции или имя процедуры.
user - имя пользователя, которому будут отменены привилегии EXECUTE.

Пример - функция

Рассмотрим некоторые примеры того, как отменить привилегии EXECUTE для функции в MySQL.

Если вы хотите отменить привилегии EXECUTE для функции GetBestPrice пользователю с именем trizor, то вы должны запустить следующий оператор REVOKE:

Если вы предоставили привилегии EXECUTE для * (всех пользователей) функции, называемой GetBestPrice, и вы хотели отменить эти привилегии EXECUTE, вы можете запустить следующий оператор REVOKE:

Пример - процедура

Рассмотрим некоторые примеры того, как отменить привилегии EXECUTE для процедуры в MySQL.

Если вы хотите отменить привилегии EXECUTE в процедуре MySqlProc пользователя с именем trizor, вы должны запустить следующий оператор REVOKE:

Если вы предоставили привилегии EXECUTE для * (всех пользователей) процедуры, называемой MySqlProc, и вы хотели отменить эти привилегии EXECUTE, вы можете запустить следующий оператор REVOKE: