SQL1

       

SYSTEMTABAUTH - ПРИВИЛЕГИИ ОБЪЕКТА, КОТОРЫЕ НЕ ОПРЕДЕЛЯЮТ АВТОРИЗАЦИЮ СТОЛБЦА


Здесь показаны имена столбцов в таблице SYSTEMTABAUTH и их описания:

СТОЛБЕЦ ОПИСАНИЕ ------------ --------------------------------------------- username Пользователь, который имеет привилегии

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

tname Имя таблицы, в которой существуют привилегии

owner Владелец tname

selauth Имеет ли пользователь привилегию SELECT

insauth Имеет ли пользователь привилегию INSERT

delauth Имеет ли пользователь привилегию DELETE

Возможные значения каждой из перечисленных привилегий объекта (имена столбцов которых оканчиваются на auth): Y, N и G.

G указывает, что пользователь имеет привилегию с возможностью передачи привилегий. В каждой строке по крайней мере один из этих столбцов должен иметь состояние, отличное от N (другими словами, иметь хоть какую-то привилегию).

=============== SQL Execution Log ================ | | | SELECT username, dba | | FROM SYSTEMUSERAUTH | | WHERE resource = 'Y' | | ; | | ================================================= | | username dba | | ----------- ------ | | Diane N | | Adrian Y | | | ===================================================

Рисунок 24.5 Пользователи, имеющие привилегию RESOURCE

Первые четыре столбца этой таблицы составляют первичный ключ. Это означает что каждая комбинация из tname, владелец-пользователь (не забудьте, что две различные таблицы с различными владельцами могут иметь одно и тоже имя), пользователь и пользователь, передающий права (грантор), должна быть уникальной. Каждая строка этой таблицы содержит все привилегии (которые не являются определённым столбцом), предоставляемые одним определённым пользователем другому определённому пользователю в конкретном объекте.

UPDATE и REFERENCES, являются привилегиями, которые могут быть определёнными столбцами и находиться в различных таблицах каталога. Если пользователь получает привилегии в таблице от более чем одного пользователя, такие привилегии могут быть отдельными строками, созданными в этой таблице. Это необходимо для каскадного отслеживания при вызове привилегий.


ТИПОВОЙ ЗАПРОС Чтобы найти все привилегии SELECT, INSERT и DELETE, которые Adrian предоставляет пользователям в таблице Заказчиков, вы можете ввести следующее (вывод показан на Рисунке 24.6):

SELECT username, selauth, insauth, delauth FROM SYSTEMTABAUTH WHERE grantor = 'Adrian' ANDtname = 'Customers';

=============== SQL Execution Log ================ | | | SELECT username, selauth, insauth, delauth | | FROM SYSTEMTABAUTH | | WHERE grantor = 'Adrian' | | AND tname = 'Customers' | | ; | | ================================================= | | username selauth insauth delauth | | ----------- ------- -------- -------- | | Claire G Y N | | Norman Y Y Y | | | ===================================================

Рисунок 24.6 Пользователи, получившие привилегии от Adrian

Выше показано, что Adrian предоставил Claire привилегии INSERT и SELECT в таблице Заказчиков, позднее предоставив ей права на передачу привилегий. Пользователю Norman он предоставил привилегии SELECT, INSERT и DELETE, но не дал возможность передачи ни одной из них. Если Claire имела привилегию DELETE в таблице Заказчиков от какого-то другого источника, в этом запросе это показано не будет.


Содержание раздела