Основы SQL


ИСПОЛЬЗОВАНИЕ АРГУМЕНТОВ ALL И PUBLIC


SQL поддерживает два аргумента для команды GRANT, которые имеют специальное значение: ALL PRIVILEGES (ВСЕ ПРИВИЛЕГИИ), или просто ALL, и PUBLIC (ОБЩИЕ).

ALL используется вместо имён привилегий в команде GRANT, чтобы передать все привилегии в таблице.

Например, Diane может выдать Stephen весь набор привилегий в таблице Заказчиков с помощью такой команды:

GRANT REFERENCES ON Salespeople TO Diane;

(привилегии UPDATE и REFERENCES, естественно, применяются ко всем столбцам.)

А это другой способ высказать ту же мысль:

GRANT ALL ON Customers TO Stephen;

PUBLIC больше похож на тип аргумента - он захватывает всё (catch-all), - чем на пользовательскую привилегию.

Когда вы предоставляете привилегии для публикации, все пользователи автоматически их получают. Наиболее часто это применяется для привилегии SELECT в определённых базовых таблицах или представлениях, которые вы хотите сделать доступными для любого пользователя. Чтобы позволить любому пользователю видеть таблицу Заказов, вы, например, можете ввести следующее:

GRANT SELECT ON Orders TO PUBLIC;

Конечно, вы можете предоставить любые или все привилегии каждому, но это, очевидно, нежелательно. Все привилегии, за исключением SELECT, позволяют пользователю изменять (или, в случае REFERENCES, ограничивать) содержание таблицы. Разрешение всем пользователям изменять содержание ваших таблиц создаст проблемы.

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

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




Начало  Назад  Вперед