Оформить и купить диплом на бланке ГОЗНАК без предоплаты

SQL привилегии

Каждый пользователь в среде SQL имеет идентификационное имя или идентификационный номер, называемый согласно ANSI ID (Идентификатором Доступа). Команда сопровождается ID пользователя, который вводится при выполнении процедуры входа в СУБД.

Привилегии, определенные ANSI, - это привилегии объекта. Это означает, что пользователь имеет привилегию, чтобы выполнить данные действия только на определенном объекте в базе данных.

Привилегии объекта связаны одновременно и с пользователями, и с таблицами. Привилегия дается определенному пользователю в указанной  базовой таблице или в представлении.

Пользователь, создавший таблицу (или представление), является владельцем этой таблицы и имеет все привилегии в этой таблице. Он может передавать привилегии другим пользователям в этой таблице.

Привилегии, которые можно назначить пользователю:

SELECT – пользователь может выполнять запросы в таблице.

INSERT, UPDATE, DELETE  –  пользователь может выполнять соответствующую команду.

REFERENCES – пользователь имеет право определить внешний ключ, который ссылается на столбцы таблицы как на родительский ключ.

INDEX – привилегия дает право создавать индекс.

SYNONYM – привилегия дает право создавать синоним.

ALTER – пользователь имеет право выполнять команду ALTER TABLE.

Привилегия предоставляется командой GRANT (ДОПУСК) согласно следующему синтаксису:

GRANT <привилегия> ON < таблица > TO < ID_пользователя >;

Команда GRANT проверяется СУБД на привилегию пользователя, подавшего эту команду, по отношению к указанной таблице.

В команде GRANT можно перечислять привилегии, а также ID пользователей, отделяя их запятыми. Согласно стандарту ANSI нельзя предоставить привилегии во многих таблицах одной командой, но в некоторых реализациях это ограничение не соблюдается.

После имени таблицы в скобках можно указать имена определенных ее столбцов, разделив их запятыми.

Используются  два аргумента команды GRANT:

ALL PRIVILEGES (ВСЕ ПРИВИЛЕГИИ) или просто ALL и

PUBLIC (ОБЩИЕ).

Аргумент ALL указывает на передачу всех привилегий в таблице. Он записывается вместо названий привилегий.

Аргумент PUBLIC дает возможность предоставить заданные привилегии  всем пользователям. Естественно, что он записывается на место списка ID пользователей после слова TO. Привилегия PUBLIC действует на всех новых пользователей, добавляемых к СУБД.

Право давать привилегии другим пользователям передается с помощью предложения WITH GRANT OPTION. Например, команда

GRANT SELECT ON СТУДЕНТ TO ВикторТ

WITH GRANT OPTION;

дает право пользователю «ВикторТ» передавать привилегию SELECT третьим лицам. Это не меняет принадлежности самой таблицы, и поэтому пользователи, получившие права, должны устанавливать префикс ID доступа владельца, когда обращаются к этим таблицам.

Привилегии отменяются командой REVOKE (ОТМЕНА). Синтаксис команды REVOKE:

REVOKE  <привилегия> ON < таблица > FROM < ID_пользователя >;

Привилегии могут отменяться только тем пользователем, который их предоставил, и отмена каскадируется.

Область действия привилегии можно уточнить используя представления. Привилегия на представление, а не на таблицу, позволяет ограничить эту привилегию предикатами в запросе, включенном в представление.

Чтобы создать представление, необходимо иметь привилегию SELECT во всех таблицах, на которые есть ссылка в представлении. Если представление модифицируемое, необходимы еще привилегии INSERT, UPDATE и DELETE.

В языке SQL применяются следующие обозначения для базовых привилегий:

CONNECT  (ПОДКЛЮЧИТЬ)    – на право пользователю регистрироваться;

RESOURCE (РЕСУРС)             – на право создавать базовые таблицы, а также представления и другие объекты, если пользователь получил при-вилегии объекта;

DBA (Администратор Базы Данных) – на право создавать любой объект в базе данных.

 Пользователь SYSADM или SYS (Системный Администратор Базы Данных), который имеет наивысшие полномочия, естественно, имеет привилегию DBA .

Системные привилегии передаются также командой GRANT, правда в слегка измененной форме. Синтаксис команды на передачу системных привилегий:

GRANT <системная_привилегия> TO < ID_пользователя >;

В большинстве реализаций СУБД  SYSADM создает пользователя командой:

GRANT CONNECT TO < ID_пользователя >

 IDENTIFIED BY < пароль >;

Пользователь получает привилегию CONNECT и пароль, указанный в  предложении IDENTIFIED BY.

Пользователь удаляется посредством команды REVOKE с привилегией CONNECT. Предварительно должны быть удалены все созданные им таблицы,  иначе действие оставит таблицу без владельца, а это недопустимо.