ИСПОЛЬЗОВАНИЕ АРГУМЕНТОВ 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 для индивидуальных пользователей.