|
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 для индивидуальных Пользователей. |