Вход в систему
Пользователи
Каждый пользователь в среде SQL имеет специальный идентификатор: имя или число. Специальная терминология различается, но, следуя ANSI, необходимо ссылаться на это имя или число как на идентификатор пользователя (authorization ID). Команды, задаваемые для базы данных, связаны с отдельным пользователем, т.е. с особым идентификатором пользователя. В базах данных SQL идентификатор пользователя — это имя пользователя, и SQL может применять специальное ключевое слово USER для ссылки на ID, связанный с текущей командой. Команды интерпретируются и разрешаются (или запрещаются) на основе информации, связанной с ID выдавшего команду.
В многопользовательских системах есть процедура входа, в соответствии с которой осуществляется доступ к компьютерной системе. Эта процедура определяет, какой ID связан с текущим пользователем. Каждый человек, применяющий базу данных, имеет свой собственный ID, так что пользователи, представленные в SQL, соответствуют реальным. Часто пользователям с множеством функций назначается множество ID, либо один идентификатор может применяться несколькими пользователями. У SQL нет способа различить эти ситуации: он просто связывает пользователя с его ID.
|
|
База данных SQL может использовать собственную процедуру входа в систему, либо она может разрешить применение другой программы, такой как операционная система для управления входом и получения идентификатора пользователя от этой программы. Независимо от способа входа в систему существует ID, связанный с конкретными действиями и совпадающий со значением ключевого слова USER.
Каждый пользователь в базе данных SQL имеет множество привилегий. Привилегии — это те действия, которые может выполнять пользователь (вход в систему — минимальная привилегия). Привилегии могут меняться с течением времени:
новые привилегии могут добавляться, старые — отменяться. Некоторые из привилегий определены в ANSI SQL, но имеются и дополнительные, весьма полезные на практике. Привилегии SQL, определенные ANSI, являются недостаточными для множества реальных ситуаций. С другой стороны, необходимые типы привилегий могут существенно отличаться от тех, которые предоставляет реальная система, — ANSI рассматривает не все из этих проблем. Привилегии, не являющиеся частью стандарта SQL, используют сходный синтаксис, который не идентичен стандарту описания вопросов конфиденциальности.
Стандартные привилегии
Привилегии SQL, определенные ANSI, являются объектными привилегиями (object privileges). Это означает, что пользователь имеет привилегию выполнить данную команду только для определенного объекта базы данных. Привилегии должны различаться для различных объектов, но системные привилегии, базирующиеся исключительно на объектных привилегиях, не могут покрыть всех потребностей SQL.
|
|
Объектные привилегии связаны как с пользователями, так и с таблицами. Привилегия дается отдельному пользователю для отдельной таблицы либо для базовой таблицы, либо для представления. Следует помнить, что пользователь, создавший таблицу, является ее владельцем. Это означает, что пользователь имеет все привилегии на таблицу и может назначать привилегии для работы с ней для других пользователей. Приведем те привилегии, которые может назначить пользователь:
Æ SELECT Пользователь с этой привилегией может выполнять запросы для таблицы.
Æ INSERT Пользователь с этой привилегией может выполнить команду INSERT для таблицы.
Æ UPDATE Пользователь с этой привилегией может выполнить команду UPDATE для таблицы. Привилегия ограничивается множеством столбцов таблицы.
Æ \ DELETE Пользователь с этой привилегией может выполнить команду DELETE для таблицы.
Æ REFERENCES Пользователь с этой привилегией может определить внешний ключ, который использует один или несколько столбцов таблицы в качестве родительского ключа. Можно ограничить привилегию указанием столбцов.
Кроме того, можно ввести нестандартные привилегии объектов, такие как INDEX (право на создание индексов таблицы), SYNONYM (право на создание синонимов объектов, см. главу 23) и ALTER (право на выполнение команды для таблицы ALTER TABLE). Механизм SQL позволяет выполнить назначение пользователям этих привилегий с помощью команды GRANT.