Материал: SQL в вопросах и задачах

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

6. 

О пр еделен и е

пр а в

до ступа

по льзо ва телей

к

да н н ы м

6.1. 

П ол ь з оват ел и

и

привил егии

К а жд ый

, 

кто

имеет

д оступ

к

ба з е

д а нных

, 

на з ыв а ется

по льзо ва т елем

. 

SQL 

исп ользуется

обыч но

в

многоп ользов а тельских

сред а х

, 

которые

требуют

раз гранич ения

п ра в

п ользов а телей

с

точ ки

з рения

д оступ а

к

д а нным

и

п рав

на

в ып олнение

с

ними

тех

или

иных

ма нип уляций

. 

Д ля

э тих

целей

в

  SQL 

реа лиз ов а ны

сред ств а

, 

п оз в оляющ ие

уста на в лив а ть

и

контролиров а ть

п рив илегии

п ользов а телей

ба з ы

д а нных

.  

К а жд ый

п ользов а тел ь

в

сред е

  SQL 

имеет

сп ециа льное

имя

или

ид ентифика тор

, 

с

п омощ ью

которого

осущ еств ляется

ид ентифика ция

п ользов а теля

д ля

уста нов ки

и

оп ред еления

его

п ра в

с

точ ки

з рения

д оступ а

к

д а нным

. 

К а жд а я

п осла нна я

к

СУ Б Д

кома нд а

  SQL-

з а п р оса

а ссоциируется

СУ Б Д

с

ид ентифика тором

д оступ а

к

д а нным

конкретного

п ользов а теля

.  

Пользов а тель

оп ред ел яется

с

п омощ ью

след ующ ей

кома нд ы

. 

CREATE USER

 <

и м я

_

по льзо ва т еля

> 

IDENTIFIED BY 

<

па р о ль

> 

После

в ып олнения

э той

кома нд ы

п ользов а тель

ста нов ится

из в естен

ба з е

д а нных

, 

но

п ока

не

может

в ып олнять

ника ких

оп ера ций

.  

У д а ление

п ользов а теля

п роиз в од ится

кома нд ой

DROP USER

 <

и м я

_

по льзо в а т еля

> . 

Н а з на ч а емые

п ользов а тел ю

п рив илегии

–

э то

то

, 

ч то

оп р ед еляет

, 

может

ли

ука з а нный

п ользов а тель

в ып олнить

д а нную

кома нд у

на д

оп р ед еленным

объектом

ба з ы

д а нных

или

нет

. 

Имеется

несколько

тип ов

п р ив илегий

, 

соотв етств ующ их

нескольким

тип а м

оп ераций

. 

Прив илегии

д а ются

и

отменяются

д в умя

кома нд а ми

 SQL, 

соотв етств енно

: 

GRANT

–

уста нов ка

п рив илегий

и

  

REVOKE

–

отмена

п р ив илегий

. 

background image

127

6.2. 

С т андарт ны е

привил егии

Прив илегии

, 

оп ред еленные

ста нд а р том

  SQL 

–

э то

п рив илегии

объекта

. 

Э то

оз на ч а ет

, 

ч то

п ользов а тель

имеет

п рив илегию

  (

п ра в о

) 

на

в ып олнение

д а нной

кома нд ы

только

на

оп ред еленном

объекте

в

ба з е

д а нных

. 

Прив илегии

объекта

св яз а ны

од нов ременно

и

с

п ользов а телями

, 

и

с

та блица ми

ба з ы

д а нных

. 

То

есть

, 

п рив илегия

д а ется

оп ред еленному

п ользов а телю

в

ука з а нной

та блице

. 

Э то

может

быть

ка к

ба з ов а я

та блица

, 

та к

и

п ред ста в ление

.  

Пользов а тель

, 

соз д а в ший

та бл ицу

  (

л юбого

в ид а

), 

яв ляется

в ла д ельцем

э той

та блицы

. 

Э то

оз на ч а ет

, 

ч то

э тот

п ользов а тель

имеет

в се

п р ив илегии

, 

относящ иеся

к

э той

та блице

, 

в

том

ч исле

, 

он

может

п еред а в а ть

п рив илегии

на

работу

с

э той

та блицей

д ругим

п ользов а телям

.  

Пользов а телю

могут

быть

на з на ч ены

след ующ ие

п рив илегии

: 

•

SELECT

–

п ользов а тель

может

в ып олнять

з а п росы

к

та блице

; 

•

INSERT

–

п ользов а тель

может

в ып олнять

в

та блице

кома нд у

 INSERT

; 

•

UPDATE

–

п ользов а тель

может

в ып олнять

в

та блице

кома нд у

UPDATE

.

Э та

п рив илегия

может

быть

огранич ена

д ля

оп р ед еленных

столбцов

та блицы

; 

•

DELETE

–

п ользов а тель

может

в ып олнять

в

та блице

кома нд у

DELETE

; 

•

REFERENCES

–

п ользов а тель

может

оп р ед елить

в нешний

ключ

  (

только

д ля

ORACLE

), 

который

исп ользует

од ин

или

более

столбцов

э той

та блицы

, 

ка к

р од ительский

ключ

. 

Воз можно

огранич ение

э той

п рив илегии

д ля

оп ред еленных

столбцов

. 

К роме

того

, 

могут

быть

неста нд а р тные

п р ив илегии

объекта

, 

та кие

, 

ка к

: 

•

INDEX

–

п ользов а тель

имеет

п р а в о

соз д а в а ть

инд екс

в

та блице

; 

•

SYNONYM

–

п ользов а тель

имеет

п ра в о

соз д а в а ть

синоним

д ля

объекта

;  

•

ALTER

–

п ользов а тель

имеет

п рав о

в ып олнять

кома нд у

ALTER

TABLE

в

та блице

;  

•

EXECUTE

–

п оз в оляет

в ып олнять

п роцед уру

. 

Н а з на ч ение

п ользов а телям

э тих

п рив илегий

осущ еств ляется

с

п омощ ью

кома нд ы

GRANT

. 

background image

128

6.3. 

Ком анда

GRANT

Пользов а тель

, 

яв л яющ ийся

в ла д ельцем

та блицы

STUDENT

, 

может

п еред а ть

д ругому

п ользов а телю

  (

п усть

э то

буд ет

п ользов а тель

с

именем

IVANOV

) 

п р ив илегию

SELECT

с

п омощ ью

след ующ ей

кома нд ы

. 

GRANT

SELECT

ON

STUDENT

TO

IVANOV

; 

Теп ерь

п ользов а тель

с

именем

IVANOV

может

в ып олнять

SELECT

-

з а

-

п росы

к

та блице

STUDENT

. 

Б ез

на лич ия

д ругих

п р ив илегий

он

может

только

в ы би р а т ь

з на ч ения

, 

но

не

может

в ып олнять

любые

д ейств ия

, 

которые

бы

в оз д ейств ов а ли

на

з на ч ения

в

та блице

STUDENT

, 

в ключ а я

исп ользов а ние

та блицы

STUDENT

в

ка ч еств е

род ительской

та блицы

в нешнего

кл юч а

. 

К огд а

SQL 

п олуч а ет

кома нд у

GRANT

, 

п ров еряются

п рив илегии

п ользов а тел я

, 

д а в шего

э ту

кома нд у

, 

ч тобы

оп р ед елить

д оп устимость

кома нд ы

GRANT

д ля

э того

п ользов а теля

. 

Пользов а тель

IVANOV

са мостоятельно

не

может

з а д а ть

э ту

кома нд у

. 

О н

та кже

не

может

п ред оста в ить

п ра в о

SELECT

д ругому

п ользов а телю

, 

та к

ка к

та бл ица

п р ина д лежит

не

ему

  (

ниже

буд ет

п ока з а но

, 

ка к

в ла д елец

та блицы

может

п еред а ть

д ругому

п ользов а телю

п рав о

п ред оста в ления

п рив илегий

).  

К ома нд а

      

GRANT

INSERT

ON

EXAM

_

MARKS

TO

IVANOV

; 

п ред оста в ляет

п ользов а телю

IVANOV

п рав о

в в од ить

в

та блицу

EXAM

_

MARKS

нов ые

строки

. 

В

кома нд е

GRANT

д оп устимо

ука з ыв а ть

ч ерез

з а п ятые

сп исок

п ред оста в ляемых

п рив илегий

и

сп исок

п ользов а телей

, 

которым

они

п ред оста в ляются

. 

Н а п ример

: 

GRANT SELECT

, 

INSERT

ON

SUBJECT

TO

IVANOV

, 

PETROV

; 

При

этом

в есь

ука з а нный

сп исок

п р ив илегий

п ред оста в ляются

в сем

ука з а нным

п ользов а телям

. 

В

строгой

  ANSI-

интерп рета ции

нев оз можно

п ред оста в ить

п рив илегии

д ля

нескольких

та блиц

од ной

кома нд ой

GRANT

. 

background image

129

6.4. 

И спол ь з ование

аргум ент ов

ALL

и

PUBLIC

А ргумент

ALL

PRIVILEGES

  (

в се

п рив илегии

) 

или

п росто

ALL

исп ользуется

в место

имен

п рив илегий

в

кома нд е

GRANT

, 

ч тобы

п ред оста в ить

в се

п рив илегии

в

та блице

. 

Н а п ример

, 

кома нд а

  

GRANT

ALL

PRIVILEGES

ON

STUDENT

TO

IVANOV

; 

или

более

коротко

GRANT

ALL

ON

STUDENT

TO

IVANOV

; 

п еред а ет

п ользов а телю

IVANOV

в есь

на бор

п рив илегий

в

та блице

STUDENT

.  

А ргумент

PUBLIC

исп ользуется

д ля

п ер ед а ч и

ука з а нных

в

кома нд е

п рив илегий

в сем

оста льным

п ользов а телям

. 

Н а иболее

ч а сто

э то

п рименяется

д ля

п рив илегии

SELECT

в

оп ред еленных

ба з ов ых

та блица х

или

п ред ста в лениях

, 

которые

необход имо

сд ела ть

д оступ ными

д ля

любого

п ользов а теля

. 

Н а п ример

, 

ч тобы

п оз в олить

любому

п ол ьзов а телю

п олуч а ть

информа цию

из

та блицы

EXAM

_

MARKS

, 

можно

исп ол ьзов а ть

кома нд у

GRANT

SELECT

ON

EXAM

_

MARKS

TO

PUBLIC

; 

Пред оста в ление

в сех

п рив илегий

к

та блице

в сем

п ользов а телям

обыч но

яв ляется

нежела тельным

. 

Все

п р ив илегии

з а

исключ ением

SELECT

п оз в оляют

п ользов а тел ю

из менять

(

или

, 

в

случ а е

REFERENCES

, 

огранич ив а ть

) 

сод ержа ние

та блицы

, 

п оэ тому

ра з решение

в сем

п ользов а телям

из менять

сод ержа ние

та блиц

может

в ыз в а ть

оп ред еленные

п роблемы

обесп еч ения

безоп а сности

и

з а щ иты

д а нных

. 

Тем

более

, 

ч то

п рив илегия

PUBLIC

не

огра нич ена

в

п еред а ч е

п рав

только

текущ им

п ользов а телям

. 

Л юбой

нов ый

п ользов а тель

, 

д оба в ляемый

к

системе

, 

а в тома тич ески

п олуч а ет

в

э том

случ а е

п олный

на бор

п рив илегий

, 

на з на ч енный

ранее

в сем

п ользов а телям

. 

Поэ тому

д ля

огр а нич ения

д оступ а

к

та блице

в сем

и

в сегд а

луч ше

в сего

п ред оста в ить

п рив илегии

, 

отлич ные

от

SELECT

, 

только

инд ив ид уа льным

п ользов а телям

.  

background image

130

6.5. 

О т м ена

привил егий

О тмена

п р ив илегии

осущ еств ляется

с

п омощ ью

кома нд ы

REVOKE

, 

котора я

имеет

синта ксис

, 

а на логич ный

кома нд е

GRANT

.  

Н а п ример

, 

кома нд а

  

REVOKE

INSERT

ON

STUDENT

FROM

PETROV

; 

отменяет

п рив илегию

INSERT

в

та блице

STUDENT

д ля

п ользов а теля

PETROV

. 

Воз можно

исп ользов а ние

в

кома нд е

REVOKE

сп исков

п рив илегий

и

п ользов а телей

. 

Н а п ример

REVOKE

INSERT

, 

DELETE

ON

STUDENT

  

FROM

PETROV

, 

SIDOROV

; 

След ует

иметь

в

в ид у

, 

ч то

п рив илегии

отменяются

тем

п ользов а телем

, 

который

их

п ред оста в ил

, 

и

, 

п р и

э том

отмена

а в тома тич ески

расп ространяется

на

в сех

п ользов а телей

, 

п ол уч ив ших

от

него

э ту

п рив илегию

. 

6.6. 

И спол ь з ование

представл ений

дл я

ф ил ь т рац ии

привил егий

Д ейств ия

п рив илегий

можно

сд ела ть

более

точ ными

, 

исп ользуя

п ред ста в ления

. 

При

п еред а ч е

п р ив илегии

п ользов а телю

в

ба з ов ой

та блице

, 

она

а в тома тич ески

ра сп ространяется

на

в се

строки

, 

а

п р и

исп ользов а нии

в оз можных

исключ ений

UPDATE

и

REFERENCES

, 

и

на

в се

столбцы

та блицы

. 

Соз д а в а я

п ред ста в ление

, 

котор ое

ссыла ется

на

ба з ов ую

та блицу

, 

и

з а тем

, 

п еред а в а я

п р ив илегию

уже

на

э то

п р ед ста в ление

, 

можно

огранич ить

э ти

п рив илегии

любыми

в ыражениями

в

з а п росе

, 

сод ержа щ емся

в

п ред ста в лении

. 

Та кой

метод

расширяет

в оз можности

кома нд ы

GRANT

. 

Д ля

соз д а ния

п ред ста в лений

п ользов а тель

д олжен

обла д а ть

п рив илегией

SELECT

в о

в сех

та блица х

, 

на

которые

он

ссыла ется

в

п ред ста в лении

. 

Е сли

п ред ста в ление

мод ифицир уемое

, 

то

люба я

из

п рив илегий

INSERT

, 

UPDATE

и

DELETE

, 

котора я

п ред оста в лена

   

п ользов а телю

в

ба з ов ой

та блице

, 

буд ет

а в тома тич ески

расп ространяться

на

п ред ста в ление

. 

Е сли

п рив илегии

на

обнов ление

отсутств уют

, 

то

их

нев оз можно

п олуч ить

и

в

соз д а нных

Источник: https://files.student-it.ru/previewfile/15134