В этом учебном пособии вы узнаете, как предоставлять и отменять привилегии в SQL Server (Transact-SQL) с синтаксисом и примерами.
Описание
Вы можете использовать привилегии GRANT и REVOKE для различных объектов базы данных в SQL Server. Мы рассмотрим, как предоставить и отменить привилегии для таблиц в SQL Server.
Grant Privileges on Table
Вы можете предоставить пользователям различные привилегии для таблиц. Эти разрешения могут быть любой комбинацией SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER или ALL.
Синтаксис
Синтаксис предоставления привилегий для таблиц в SQL Server:
Параметры или аргументы
privileges - назначенные привилегии. Это может быть любое из следующих значений:
SELECT | Возможность выполнения операторов SELECT на таблице. |
INSERT | Возможность выполнения операторов INSERT на таблице. |
UPDATE | Возможность выполнения операторов UPDATE на таблице. |
DELETE | Возможность выполнения операторов DELETE на таблице. |
REFERENCES | Возможность создания ограничения, которое ссылается на таблицу. |
ALTER | Возможность выполнять оператора ALTER TABLE для изменения определения таблицы. |
ALL | ВСЕ не предоставляет все разрешения для таблицы. Скорее, он предоставляет разрешения ANSI-92, которые являются SELECT, INSERT, UPDATE, DELETE и REFERENCES. |
object - имя объекта базы данных, для которого вы предоставляете разрешения. В случае предоставления привилегий для таблицы это будет имя таблицы.
user - имя пользователя, которому будут предоставлены эти привилегии.
Пример
Рассмотрим некоторые примеры предоставления привилегий для таблиц в SQL Server. Например, если вы хотите предоставить привилегии SELECT, INSERT, UPDATE и DELETE для таблицы, называемой employees, для имени пользователя samvel, вы должны запустить следующий оператор GRANT:
1 |
GRANT SELECT, INSERT, UPDATE, DELETE ON employees TO samvel; |
Вы также можете использовать ключевое слово ALL, чтобы указать, что вы хотите предоставить разрешения ANSI-92 (т.е.: SELECT, INSERT, UPDATE, DELETE и REFERENCES) для пользователя с именем samvel.
Например:
1 |
GRANT ALL ON employees TO samvel; |
Если вы хотите предоставить только доступ SELECT для таблицы employees всем пользователям, вы можете предоставить привилегии публичной роли. Например:
1 |
GRANT SELECT ON employees TO public; |
Revoke Privileges on Table
Как только вы предоставили привилегии, вам может потребоваться отменить некоторые или все эти привилегии. Для этого вы можете запустить команду отмены. Вы можете отменить любую комбинацию SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER или ALL.
Синтаксис
Синтаксис отмены прав на таблицу в SQL Server:
privileges - назначенные привилегии. Это может быть любое из следующих значений:
SELECT | Возможность выполнения операторов SELECT на таблице. |
INSERT | Возможность выполнения операторов INSERT на таблице. |
UPDATE | Возможность выполнения операторов UPDATE на таблице. |
DELETE | Возможность выполнения операторов DELETE на таблице. |
REFERENCES | Возможность создания ограничения, которое ссылается на таблицу. |
ALTER | Возможность выполнять оператора ALTER TABLE для изменения определения таблицы. |
ALL | ВСЕ не предоставляет все разрешения для таблицы. Скорее, он предоставляет разрешения ANSI-92, которые являются SELECT, INSERT, UPDATE, DELETE и REFERENCES. |
object – имя объекта базы данных, для которого вы отменяете привилегии. В случае отмены привилегий для таблицы это будет имя таблицы.
user - имя пользователя, для которого будут отменены эти привилегии.
Пример
Рассмотрим некоторые примеры отмены прав для таблицы в SQL Server. Например, если вы хотите отменить привилегии DELETE для таблицы, называемой employees для пользователя с именем samvel, вы должны запустить следующий оператор REVOKE:
1 |
REVOKE DELETE ON employees FROM samvel; |
Если вы хотите отменить все разрешения ANSI-92 (т.е.: SELECT, INSERT, UPDATE, DELETE и REFERENCES) в таблице для пользователя с именем samvel, вы можете использовать ключевое слово ALL следующим образом:
1 |
REVOKE ALL ON employees FROM anderson; |
Если вы предоставили привилегии SELECT публичной роли (то есть: всем пользователям) в таблице employees и хотели отменить эти привилегии, вы можете запустить следующий оператор REVOKE:
1 |
REVOKE SELECT ON employees FROM public; |