Другие типы привилегий
Преимущественное право создавать таблицы не регламентируется ANSI. Но эту область привилегий нельзя игнорировать (все стандартные ANSI-привилегии вытекают из нее), ведь именно создатели таблиц предоставляют привилегии на объекты. Кроме того, разрешая всем пользователям создавать базовые таблицы в системе любого размера, увеличивается избыточность данных и снижается эффективность системы их обработки. Следующие вопросы связаны с этим же. Кто имеет право изменять, удалять или накладывать ограничения на таблицу? Отличается ли право создавать базовые таблицы от права создавать представления? Должны ли существовать суперпользователи (superusers) — пользователи, основной обязанностью которых является управление базой данных и которые имеют подавляющее множество или все привилегии и не имеют права их индивидуальной передачи?
Поскольку ANSI не касается этих вопросов, в конкретных реализациях SQL используется огромное множество подходов, и невозможно дать вполне конкретные ответы на все эти вопросы. Можно только изложить наиболее общий подход к решению этих проблем.
|
|
Привилегии, которые не определяются в терминах отдельных объектов, называются системными привилегиями (system privileges) или авторским правом на базу данных (database authorities). В подавляющем большинстве случаев системные привилегии включают в себя право создавать объекты данных, различать базовые таблицы (обычно создаваемые силами нескольких пользователей) и представления (обычно создаваемые многими или всеми пользователями). Системная привилегия на создание представления поддерживается, в отличие от привилегии замены, объектными привилегиями, представленными в стандарте ANSI. Кроме того, в системе любого размера существует суперпользователь. Термин, чаще всего используемый для такого суперпользователя и его привилегий, — администратор базы данных (DBA — Database Administrator).
Обычно принято различать три типа базовых систем привилегий, которые называются CONNECT, RESOURCE и DBA. CONNECT предусматривает право входить в систему и создавать представления и синонимы (см. главу 23), если речь идет об объектных привилегиях. RESOURCE предоставляет право создавать базовые таблицы. DBA — это привилегия суперпользователя, дающая право пользователю распоряжаться базой данных по своему усмотрению (как своей собственной). Эту привилегию имеет пользователь (один или несколько) с функцией администрирования базы данных. В некоторых системах есть также специальный пользователь (иногда называемый SYSADM или просто SYS), обладающий высшим авторским правом; это специальное обозначение пользователей, в отличие от имеющих привилегию DBA. SYSADM рассматривается как идентификатор пользователя. Различия в названиях и приписанных им действиях существенны для различных систем. Мы будем ссылаться на самого высоко привилегированного пользователя (или пользователей), который занимается проектированием и управлением базой данных как на пользователя DBA, отражая тот факт, что за этим названием скрывается скорее функция чем привилегия.
|
|
Команда GRANT в своей модифицированной форме применима и к системным, и к объектным привилегиям. Начальные привилегии назначаются пользователем DBA. Например, DBA может передать привилегию создания таблицы пользователю Rodriguez таким образом:
GRANT RESOURCE TO Rodriguez;