Kiváltságok megadása
Az SQL adatbázis minden felhasználójának számos jogosultsága van. Ez a felhasználó számára megengedett. Ezek a jogosultságok idővel változnak - újakat adnak hozzá, a régieket törlik. Ezen jogosultságok némelyikét az ANSI SQL határozza meg, de további jogosultságokra is szükség van.
Az ANSI által definiált SQL jogosultságok a legtöbb valós helyzetben nem elégségesek. Másrészt a szükséges kiváltságok típusai módosíthatók az Ön által használt rendszer típusával, amelyre nézve az ANSI nem tud ajánlatot tenni. Az olyan kiváltságok, amelyek nem része az SQL szabványnak, hasonló szintaxist használhatnak, és nem teljesen felelnek meg a szabványnak.
Standard jogosultságok
Az ANSI által definiált SQL jogosultságok az objektum kiváltságai. Ez azt jelenti, hogy a felhasználónak csak akkor van jogosultsága végrehajtania ezt a parancsot, ha az adott objektum az adatbázisban van. Nyilvánvaló, hogy a kiváltságoknak meg kell különböztetniük ezeket az objektumokat, de egy kiváltságos rendszer, amely kizárólag az objektum kiváltságain alapul, nem írhat le mindent, amit az SQL igényel, amint később lásd ebben a fejezetben.
Az objektum jogosultságai a felhasználókhoz és a táblákhoz kapcsolódnak. Ez azt jelenti, hogy a kiváltság egy meghatározott felhasználónak van megadva a megadott táblában, vagy az alaptáblában vagy nézetben. Ne feledje, hogy a táblázatot létrehozó felhasználó (bármi más) tulajdonosa ennek a táblázatnak. Ez azt jelenti, hogy a felhasználónak minden jogosultsága van ebben a táblázatban, és átruházhatja a többi felhasználó jogosultságait a táblázatban.
Felhasználókhoz rendelhető jogosultságok:
SELECT A jogosultsággal rendelkező felhasználó végrehajthatja a lekérdezéseket egy táblázatban.
INSERT A jogosultsággal rendelkező felhasználó végrehajthatja az INSERT parancsot a táblázatban.
UPDATE A jogosultsággal rendelkező felhasználó végrehajthatja az UPDATE parancsot a táblán. Ezt a jogosultságot a táblázat egyes oszlopaira korlátozhatja.
DELETE A jogosultsággal rendelkező felhasználó végrehajthatja a DELETE parancsot a táblában.
HIVATKOZÁSOK A jogosultsággal rendelkező felhasználó definiálhat egy idegen kulcsot, amely a táblázatban egy vagy több oszlopot használ szülő kulcsként. Ez a jogosultság korlátozható bizonyos oszlopokra. (Az idegen kulcsról és a szülő kulcsról lásd a 19. fejezetet.)
Ezenkívül nem szabványos objektum jogosultságokkal is találkozhat, mint például az INDEX. amely megadja a jogot, hogy indexet hozzon létre a táblában, a SYNONYM. amely megadja a jogot az objektum szinonimájának létrehozására, amelyet a 23. fejezetben és az ALTER-ben ismertetünk. amely megadja a jogot az ALTER TABLE parancs végrehajtására a táblázatban. Az SQL-engine ezeket a jogosultságokat a GRANT parancsot használó felhasználókhoz rendelheti hozzá.
A támogatás parancs
Tegyük fel, hogy a felhasználónak Diane-nek van egy vevői asztala, és meg akarja engedni Adrian felhasználónak, hogy teljesítse a kérést. Diane-nek ebben az esetben írja be a következő parancsot:
GRANT SELECT ON ügyfelek TO Adrian;
Most Adrian lekérdezheti az ügyfelek tábláját. Más kiváltságok nélkül csak értékeket választhat; de nem hajthat végre semmilyen olyan műveletet, amely befolyásolná az Ügyfél táblázatában szereplő értékeket (ideértve az Ügyféltáblázatot az idegen kulcs szülő táblájának használatával is, amely korlátozza az ügyféltáblában szereplő értékekhez esetleg végrehajtandó módosításokat).
Amikor az SQL megkapja a GRANT parancsot, ellenőrzi a parancsot elküldő felhasználó jogosultságait annak megállapítására, hogy a GRANT parancs érvényes-e.
Adrian nem tudja önállóan kiadni ezt a parancsot. Nem adhatja meg a SELECT jogát egy másik felhasználónak: a táblázat még mindig Diane tulajdonában van (később bemutatjuk, hogy Diane hogyan adhatja Adriannek a SELECT más felhasználóknak való jogosultságát).
A szintaxis ugyanaz, mint más jogosultságok megadása. Ha Adrian a Szolgáltatók tábla tulajdonosa, akkor megengedi Dianának, hogy sorokat vonjon be a következő mondattal
GRANT INSERT ON Értékesítők TO Diane;
Most Dianenek jogában áll új eladóot felvenni az asztalra.