|
![]() | P°φkaz DROP VIEW | ![]() | SQL p°φkazy | P°φkaz REVOKE | ![]() |
p°φkaz_GRANT ::= p°φkaz_GRANT_pro_tabulky | p°φkaz_GRANT_pro_rutiny
p°φkaz_GRANT_pro_tabulky ::= GRANT v²Φet_prßv ON [schema.]jmΘno_tabulky TO seznam_subjekt∙ [ WITH GRANT OPTION ] [ WHERE podmφnka_where ]
v²Φet_prßv ::= ALL [ PRIVILEGES ] | jednotlivΘ_prßvo {, jednotlivΘ_prßvo }à
jednotlivΘ_prßvo ::= DELETE | INSERT | SELECT | UPDATE [( seznam_sloupc∙ )] | REFERENCES [( seznam_sloupc∙ ) | GRANT ]
seznam_sloupc∙ ::= sloupec { , sloupec }à
seznam_subjekt∙ ::= PUBLIC | subjekt {, subjekt }à
subjekt ::= [ USER ] jmΘno_u₧ivatele | [ GROUP ] jmΘno_role | ROLE [schΘma . ] jmΘno_role
p°φkaz_GRANT_pro_rutiny ::= GRANT v²Φet_prßv ON [ PROCEDURE | FUNCTION ] [schema.]jmΘno_rutiny TO seznam_subjekt∙ [ WITH GRANT OPTION ]
v²Φet_prßv ::= ALL [ PRIVILEGES ] | jednotlivΘ_prßvo {, jednotlivΘ_prßvo }à
jednotlivΘ_prßvo ::= EXECUTE | UPDATE
Popis
P°φkaz GRANT nastavφ pro u₧ivatele, skupiny u₧ivatel∙ a role urΦenΘ v seznamu_subjekt∙ prßva k:
Pro mo₧n² konflikt jmΘna tabulky a jmΘna rutiny je rozumnΘ rutiny odliÜit slovem PROCEDURE nebo FUNCTION.
Majφ-li se nastavovat prßva k jednotliv²m zßznam∙m (tzv. zßznamovß prßva), musφ se pou₧φt klauzule WHERE s omezujφcφ podmφnkou na zßznamy tabulky jmΘno_tabulky a souΦasn∞ tabulka musφ mφt tato prßva povolena (p°i nßvrhu tabulky).
Ve v²Φtu_prßv definujete, jakß prßva se majφ nastavit. Pou₧ijete-li slovo ALL, nastavφ se vÜechna mo₧nß prßva. Chcete-li nastavit pouze n∞kterß prßva, jednotliv∞ je vypφÜete a odd∞lφte Φßrkami. K dispozici jsou pro tabulky tato prßva:
Pro zßznamovß prßva nenφ k dispozici prßvo INSERT.
Pro rutiny je v²Φet prßv jednoduÜÜφ:
V seznamu_subjekt∙ urΦujete, koho (jak²ch subjekt∙ prßva) se nastavenφ prßv t²kß. Pou₧ijete-li slovo PUBLIC, prßva se nastavφ pro skupinu EVERYBODY. V jinΘm p°φpad∞ se nastavφ t∞m u₧ivatel∙m, skupinßm nebo rolφm, kte°φ jsou uvedeni jmenovit∞. Pou₧ijte-li jmΘno skupiny u₧ivatel∙ (ji₧ definovanΘ na serveru), nastavφ se prßva tΘto skupin∞, tzn. ₧e u₧ivatelΘ v nφ za°azenφ prßva d∞dφ automaticky. Pokud u subjektu prßva nenφ uvedeno USER, GROUP ani ROLE, pak se jeho jmΘno hledß nejprve mezi u₧ivateli, pak mezi skupinami.
Pokud subjekt mß ji₧ urΦitß prßva, pak prßva uvedenß v p°φkazu GRANT se k nim p°idajφ.
Uvede-li se klauzule WITH GRANT OPTION, pak u₧ivatelΘ a skupiny zφskajφ mo₧nost svß prßva poskytovat dalÜφm u₧ivatel∙m (totΘ₧ co GRANT ve v²Φtu_prßv).
V souΦasnΘ verzi nenφ mo₧nΘ p°φkazem GRANT nastavovat prßva k objekt∙m (v²jimku tvo°φ procedury).
P°φklad pou₧itφ:
Dejte u₧ivateli PETR prßvo mazat zßznamy a editovat Φφslo pracovnφka a jeho plat, vÜechna prßva k jednomu vybranΘmu zßznamu tabulky DocTab a prßvo spouÜt∞t proceduru ZmenaCeniku.
GRANT DELETE, UPDATE (Plat, Cislo)
ON Zamestan
TO Petr
GRANT ALL ON DocTab
TO USER Petr
WHERE id=25
GRANT EXECUTE
ON PROCEDURE ZmenaCeniku
TO Petr
Viz
![]() | P°φkaz DROP VIEW | ![]() | SQL p°φkazy | P°φkaz REVOKE | ![]() |