itthon / A PC elsajátítása / Jogok hozzárendelése és eltávolítása. Az SQL GRANT parancsok visszavonják az egyéb típusú támogatásokat

Jogok hozzárendelése és eltávolítása. Az SQL GRANT parancsok visszavonják az egyéb típusú támogatásokat

A DCL parancsok az adatbázisok védelmére szolgálnak több felhasználói adatbázist tartalmazó környezetben. A DCL-parancsok két típusa az engedélyezés és a visszavonás. Csak az adatbázis-adminisztrátor vagy az adatbázis-objektum tulajdonosa adhat vagy távolíthat el jogosultságokat egy adatbázis-objektumhoz.

SQL GRANT parancs

Az SQL GRANT egy olyan parancs, amely hozzáférést vagy jogosultságokat biztosít az adatbázis-objektumokhoz a felhasználóknak.

A GRANT parancs szintaxisa a következő:

GRANT jogosultság_neve
ON objektum_neve
TO (felhasználónév |NYILVÁNOS |szerepnév)
;

  • PRIVILEGE_NAME ezt a hozzáférési jogot vagy kiváltságot a felhasználó megkapja. A hozzáférési jogok egy része: ALL, EXECUTE és SELECT.
  • objektum_neve egy adatbázis-objektum, például egy tábla, egy nézet és egy SEQUENCE tárolt eljárás neve.
  • felhasználónév
  • felhasználónév ez az a felhasználónév, amelyhez a hozzáférés joga magától értetődőnek tekinthető.
  • NYILVÁNOS hozzáférési jogokat biztosít minden felhasználó számára.
  • SZEREPEK a kiváltságok egy csoportja.
  • TÁMOGATÁSI OPCIÓVAL - Lehetővé teszi a felhasználó számára, hogy hozzáférési jogokat adjon más felhasználóknak.

Például: VÁLASZTHATÓ ALKALMAZOTTAI TÁMOGATÁS 1. felhasználó számára; Ez a parancs SELECT engedélyt ad az alkalmazotti táblán a user1-nek. Óvatosan használja a GRANT opcióval, mert például ha a WITH GRANT beállítással SELECT jogosultságot ad az alkalmazotti táblán user1-nek, akkor user1 megadhatja a SELECT jogosultságot. az asztalon alkalmazott másik felhasználóhoz, például user2 stb. Később, ha visszavonja az alkalmazott KIVÁLASZTÁSI jogosultságát a user1-től, a felhasználó2 továbbra is a SELECT jogosultsággal fog rendelkezni az alkalmazotti táblában.

SQL REVOKE parancs:

A REVOKE parancs eltávolítja a felhasználói hozzáférési jogokat vagy jogosultságokat az adatbázis-objektumokról.

A REVOKE parancs szintaxisa a következő:

A jogosultság_neve VISSZAVONÁSA
ON objektum_neve
FROM (felhasználónév |NYILVÁNOS |szerepnév)

Például: KEWOKE SELECT ON alkalmazott felhasználó1; Ez a parancs visszavonja a SELECT jogosultságot az alkalmazott tábláján a user1-től. Ha VISSZA VISSZAJA VISSZA a SELECT jogosultságot a táblán a felhasználótól, a felhasználó többé nem tud adatokat kiválasztani a táblából. Ha azonban egy felhasználó egynél több felhasználótól kapott KIVÁLASZTÁSI jogosultságokat az adott táblában, akkor a táblából választhat mindaddig, amíg mindenki, aki engedélyt kapott, visszavonja azt. Nem vonhatja vissza a jogosultságokat, ha azokat eredetileg nem Ön adta.

Kiváltságok és szerepek:

Jogosultságok: A hozzáférési jogok meghatározzák a felhasználónak az adatbázis-objektumhoz biztosított hozzáférési jogokat. Kétféle kiváltság létezik.

privilégiumok 1) Rendszer- Lehetővé teszi a felhasználó számára adatbázis-objektumok létrehozását, módosítását vagy törlését.
2) Objektumjogok- Ez lehetővé teszi a felhasználó számára az adatok VÉGREHAJTÁSÁT, KIVÁLASZTÁSÁT, BESZÁLLÍTÁSÁT, FRISSÍTÉSÉT vagy TÖRLÉST az adatbázis-objektumokból, amelyekre a jogosultságok vonatkoznak.

Az alábbiakban felsorolunk néhány rendszer-létrehozási jogosultságot:

Rendszerjogosultságok Leírás
CREATE objektum lehetővé teszi a felhasználók számára, hogy saját sémájukban hozzák létre a megadott objektumot.
LÉTREHOZZON BÁRMILYEN objektumot lehetővé teszi a felhasználók számára, hogy bármilyen sémában létrehozzák a megadott objektumot.

A fenti szabályok az Altera és a DROP rendszerjogokra is vonatkoznak.

Az objektumjogok közül néhányat az alábbiakban sorolunk fel:

Objektumjogok Leírás
BESZÁLLÍTÁS lehetővé teszi a felhasználók számára, hogy sorokat szúrjanak be egy táblázatba.
KIVÁLASZTÁS lehetővé teszi a felhasználók számára, hogy adatokat jelöljenek ki egy adatbázis-objektumból.
FRISSÍTÉS lehetővé teszi a felhasználó számára, hogy frissítse az adatokat egy táblázatban.
VÉGREHAJTÁS lehetővé teszi a felhasználó számára egy tárolt eljárás vagy funkció végrehajtását.

Szerepek: A szerepek jogosultságok vagy hozzáférési jogok halmaza. Ha sok felhasználó van egy adatbázisban, nehéz lesz jogosultságokat adni vagy visszavonni a felhasználók számára. Ezért, ha meghatározott szerepköröket, jogosultságokat adhat vagy vonhat vissza a felhasználóknak, ezáltal automatikusan megadhatja vagy visszavonhatja a jogosultságokat. Létrehozhat szerepköröket, vagy használhat előre meghatározott oracle rendszerszerepeket.

A rendszerszerepeknek biztosított bizonyos jogosultságok a következők:

Rendszerszerep A szerephez biztosított kiváltságok
KAPCSOLAT TÁBLÁZAT LÉTREHOZÁSA, NÉZET LÉTREHOZÁSA, SZINONÍMA LÉTREHOZÁSA, SZEKVENCIA LÉTREHOZÁSA, MUNKAHELY LÉTREHOZÁSA stb.
FORRÁS ELJÁRÁS LÉTREHOZÁSA, SZEKVENCIA LÉTREHOZÁSA, TÁBLÁZAT LÉTREHOZÁSA, TRIGGER LÉTREHOZÁSA stb. A RESOURCE szerepkör elsődleges használata az adatbázis-objektumokhoz való hozzáférés korlátozása.
DBA MINDEN RENDSZER KIVÁG

Szerepek létrehozása:

A szerepkör létrehozásának szintaxisa a következő:

CREATE ROLE szerepnév
;

Például: A „fejlesztő” szerepkör létrehozásához „PWD” jelszóval a kód a következő lesz

CREATE ROLE teszt
;

Könnyebb jogosultságokat adni vagy visszavonni a felhasználóknak szerepkörökön keresztül, nem pedig közvetlenül az egyes felhasználókhoz rendelni. Ha egy szerepkört jelszóval azonosítanak, akkor a szerepkör jogosultságainak megadásakor vagy visszavonásakor feltétlenül jelszóval kell azonosítania.

Szerepjogot adhatunk vagy vonhatunk vissza az alábbiak szerint.

Például: A TÁBLÁZAT LÉTREHOZÁSA jogosultság megadása egy felhasználónak tesztszerep létrehozásával:

Először hozzon létre egy tesztelési szerepet

CREATE ROLE teszt

Másodszor, adja meg a CREATE TABLE jogosultságot a szerepkör teszteléséhez. További jogosultságokat adhat ehhez a szerepkörhöz.

TÁBLÁZAT LÉTREHOZÁSÁNAK SZABÁLYOZÁSA A teszteléshez;

Harmadszor, adjon szerepet a felhasználónak.

GRANT tesztelés TO user1;

A TÁBLÁZAT LÉTREHOZÁSA jogosultságának visszavonásához a ROLE teszteléséből a következőket írja be:

A TÁBLÁZAT LÉTREHOZÁSA VISSZAVONÁSA A tesztelésből;

A szerepek adatbázisból való kidobásának szintaxisa a következő:

DROP ROLE szerepnév;

Például: A fejlesztő nevű szerepkör eltávolításához írhat.

Az SQL Server platform a REVOKE utasítást használja a hozzárendelt engedélybeállítások visszavonására adott felhasználó. Ez a pont azért fontos, mert az SQL Server támogatja az opcionális DENY utasítást, amely kifejezetten megtagadja a felhasználó hozzáférését a megadott erőforráshoz. Az SQL Serverben a REVOKE utasítás használható a felhasználónak GRANT utasítással adott jogosultságok visszavonására. Ha kifejezetten meg akarja vonni egy felhasználó jogosultságát, használja a DENY utasítást.

Az SQL Server platform nem támogatja az ANSI HIERARCHY OPTION és az ADMIN OPTION záradékot. Bár az ADMIN OPTION záradék nem támogatott, a REVOKE parancs SQL Server-verziója két rendszergazdai jogosultsággal rendelkezik (CREATE és BACKUP). Az utasítás szintaxisa a következő.

VISSZAVONÁS ([object_privilege] [, …] | [system_privilege]) [([, …] oszlop)]]| (CÍM | FROM) (címzett_neve [, …] | szerep [, …] | NYILVÁNOS | VENDÉG) ]

TÁMOGATÁSI LEHETŐSÉG

A felhasználó elveszíti azt a jogát, hogy meghatározott jogosultságokat rendeljen más felhasználókhoz.

tárgyi privilégium

A különböző utasításokhoz való hozzáférési jogok visszavonásra kerülnek, amelyek tetszőleges sorrendben kombinálhatók.

MINDEN

A megadott felhasználókhoz és/vagy a megadott adatbázis-objektumokhoz jelenleg hozzárendelt összes jogosultság visszavonásra kerül. Ennek a mondatnak a használata nem ajánlott, mivel hozzájárul a programozás homályosságához.

(KIVÁLASZT | FRISSÍTÉS TÖRLÉSE BESZÁLLÍTÁS)

A megadott felhasználótól visszavonják a megadott hozzáférési jogosultságot a megadott objektumhoz (például egy táblához vagy nézethez). Az oszlopszintű jogosultságok visszavonásához használja az oszlopok zárójelben lévő listáját.

IRODALOM

Az adatbázis-objektumra szülőobjektumként hivatkozó idegen kulcs-megszorítások létrehozásának és törlésének joga visszavonásra kerül.

A felhasználó táblában vagy nézetben szabály létrehozására vagy törlésére vonatkozó joga visszavonásra kerül.

A tárolt eljárás, a felhasználó által meghatározott funkció vagy a kiterjesztett tárolt eljárás végrehajtásának joga visszavonásra kerül.

rendszerjogosultság

A következő utasítások végrehajtási joga visszavonásra kerül: ADATBÁZIS LÉTREHOZÁSA, ALAPÉRTELMEZETT LÉTREHOZÁS, FUNKCIÓ LÉTREHOZÁSA, ELJÁRÁS LÉTREHOZÁSA, SZABÁLY LÉTREHOZÁSA, TÁBLÁZAT LÉTREHOZÁSA, NÉZET LÉTREHOZÁSA, ADATBÁZIS Biztonsági mentése és MENTÉSI NAPLÓ.

ON [objektum] [([, ...] oszlop)]

A felhasználó hozzáférési joga a megadott objektumhoz visszavonásra kerül. Ha az objektum egy táblázat vagy nézet, visszavonhatja az egyes oszlopok hozzáférési jogosultságait. Egy táblázatban vagy nézetben visszavonhatja a SELECT, INSERT, UPDATE, DELETE és REFERENCES jogosultságokat. A táblázat vagy nézet oszlopaiban csak a SELECT és UPDATE jogosultságokat vonhatja vissza. Megvonhatja a VÉGREHAJTÁSI jogosultságokat egy tárolt eljárásra, a felhasználó által definiált függvényre vagy a kiterjesztett tárolt eljárásra.

[TO | FROM] címzett neve | szerep | NYILVÁNOS | VENDÉG

Meghatározza azokat a felhasználókat vagy szerepköröket, amelyek elveszítik a megadott jogosultságokat. A NYILVÁNOS szerepkörhöz rendelt jogosultságok visszavonásához (ami minden felhasználót magában foglal), használhatja kulcsszó NYILVÁNOS. Több címzettet is felsorolhat, ha nevüket vesszővel választja el. Az SQL Server támogatja a GUEST fiókot is, amelyet minden olyan felhasználó használ, aki nem rendelkezik bejegyzéssel az adatbázisban.

Azon felhasználók jogosultságai, akiknek a WITH GRANT OPTION záradék révén biztosították jogaikat, megszűnnek. Ez a záradék a GRANT OPTION FOR záradék használatakor szükséges.

AS (csoportnév szerepnév)

Meghatározza azokat a jogokat, amelyek alapján a jogosultság visszavonásra kerül. Egyes esetekben a felhasználónak átmenetileg szüksége lehet egy bizonyos csoport jogaira, hogy visszavonja a megadott jogosultságokat. Ebben az esetben az AS záradékot használhatja ilyen jogok megszerzésére.

A REVOKE utasítás két formája, a REVOKE objektumjogosultság és a REVOKE rendszerjogosultság kölcsönösen kizárja egymást. Ne próbálja meg mindkét műveletet ugyanabban az utasításban végrehajtani. A legfontosabb szintaktikai különbség a kettő között az, hogy az ON záradékot nem szabad használni a rendszerjogosultságok eltávolításakor. Például egy rendszerjogosultság eltávolításához használhatja a következő parancsot.

ADATBÁZIS LÉTREHOZÁSA, BIZTONSÁGI ADATBÁZIS VISSZAVONÁSA dylan, katie

Ha a felhasználó a WITH GRANT OPTION záradékkal jogosultságokat kapott, akkor ezeket a jogosultságokat a WITH GRANT OPTION és a CASCADE záradékkal egyidejűleg vissza kell vonni. Például:

TÁMOGATÁSI OPCIÓ VISSZA VONATKOZÁSA A CASCADE GO címek KIVÁLASZTÁSÁRA, BEHELYEZÉSÉRE, FRISSÍTÉSÉRE, TÖRLÉSÉRE

A REVOKE parancs csak az aktuális adatbázison használható. Ennek megfelelően az ANSI szabványos CURRENTJJSER és CURRENTROLE opciókat mindig implicit módon feltételezzük. A REVOKE utasítás az összes DENY opció törlésére is szolgál.

Az SQL Server platform az opcionális DENY utasítást is támogatja. A DENY utasítás szintaxisa megegyezik a REVOKE utasítás szintaxisával. Lényegében azonban abban különböznek egymástól, hogy a REVOKE semlegesíti a felhasználó jogosultságait, míg a DENY kifejezetten megtagadja azokat. Használja a DENY utasítást annak megakadályozására, hogy egy felhasználó vagy szerepkör hozzáférjen egy jogosultsághoz, még akkor is, ha a jogosultságot kifejezetten vagy szerep-hozzárendelésen keresztül biztosítják.

A REVOKE utasítást a korábban megadott vagy megtagadott (DENY) jogosultságok eltávolítására kell használni. Például kelly felhasználó meghosszabbított szülői szabadságra ment. Ekkor megtagadták az alkalmazotti asztalhoz való hozzáférését. Visszajött, és újra engedélyeztük a jogosultságokat.

MINDEN ALKALMAZOTT TAGADÁSA Kelly GO-tól

MINDEN ALKALMAZOTT VISSZAVONÁSA Kelly GO-nak

Ebben a példában a REVOKE parancs nem szünteti meg a jogosultságait, hanem visszavonja a DENY parancs hatását.

Alapértelmezés szerint a fióknak nincsenek jogosultságai az Oracle adatbázisban. Még csak kapcsolatokat sem hozhat létre hozzárendelt jogok nélkül. A fiók pedig a csatlakozási jogok megszerzése után sem tud semmi hasznosat (vagy veszélyeset) csinálni a megfelelő jogok megszerzése nélkül. Az engedélyek megadása a GRANT paranccsal történik, és a REVOKE paranccsal eltávolítható. További parancs direktívák segítségével lehetővé teszik a fiókok számára, hogy megosszák jogaikat más felhasználókkal. Alapértelmezés szerint csak a rendszergazdai fiókok (SYS és SYSTEM) rendelkeznek jogosultságokkal a jogok hozzárendelésére. Azt a felhasználót, aki a jogokat egy másik felhasználóhoz rendeli, megadónak nevezzük, ha a jogok címzettje jogosult. A jogok két csoportra oszthatók: rendszerjogok, amelyek durván szólva lehetővé teszik a felhasználó számára, hogy olyan műveleteket hajtson végre, amelyek hatással vannak az adatszótárra, és olyan objektumok feletti jogokat, amelyek lehetővé teszik a felhasználó számára az adatokat érintő műveletek végrehajtását.

Rendszerjogok

Összesen körülbelül kétszáz rendszerjog érhető el. Legtöbbjük olyan műveleteket érint, amelyek befolyásolják az adatok megfogalmazását (például táblák vagy felhasználók létrehozása). A többi a példányt vagy az adatbázist érinti (táblaterületek létrehozása, adatbázis-paraméterek módosítása és szekciók létrehozása). A leggyakrabban használt jogok a

  • CREATESESSION - csatlakozási jogok. Ezen jogok nélkül nem is tud majd csatlakozni az adatbázishoz
  • RESTRICTEDSESSION – Ha az adatbázis a STARTUPRESTRICT direktívával indul, vagy az ALTERSYSTEMENABLERESTRICTEDSESSION parancsot használja, akkor csak az ilyen jogokkal rendelkező felhasználók csatlakozhatnak az adatbázishoz.
  • ALTERDATABASE - lehetővé teszi olyan parancsok végrehajtását, amelyek befolyásolják a fizikai struktúrákat
  • ALTERSYSTEM – lehetővé teszi a példányparaméterek és a memóriastruktúra megváltoztatását
  • CREATETABLESPACE – az ALTERTABLESPACE és DROPTABLESPACE szolgáltatásokkal együtt lehetővé teszi a felhasználó számára a táblaterületek kezelését
  • CREATETABLE - lehetővé teszi, hogy a rácsos táblákat hozzon létre a sémájában; magában foglalja a táblák létrehozásának, módosításának és eldobásának, a DML végrehajtásának és a parancsok kiválasztásának, valamint az indexek kezelésének lehetőségét.
  • GRANTANYOBJECTPRIVILEGE - lehetővé teszi a kedvezményezett számára, hogy kezelje olyan tárgyak jogait, amelyek nem tartoznak hozzá, de nem ad jogokat saját magának
  • CREATEANYTABLE – a kedvezményezett létrehozhat más fiókokhoz tartozó táblákat
  • DROPANYTABLE – a kedvezményezett eldobhat olyan táblákat, amelyek más fiókokhoz tartoznak
  • BEHELYEZHETŐ, FRISSÍTHETŐ, TÖRÖLHETŐ - végrehajtási jogot ad a kedvezményezettnek DML parancsok nem hozzá tartozó tárgyak felett
  • SELECTANYTABLE – Jogot ad a kedvezményezettnek a KIVÁLASZTÁSRA bármely asztalon.

Szintaxis az engedélyek hozzárendeléséhez

GRANT privilégium [,jogosultság…] A felhasználónévnek;

A fiók létrehozása után rendszerint olyan engedélyeket rendelnek hozzá, amelyeket az alkalmazás fejlesztésében részt vevő felhasználók gyakran használnak.

támogatás létrehozási munkamenet, munkamenet módosítása,

táblázat létrehozása, nézet létrehozása, szinonimák létrehozása, fürt létrehozása,

adatbázis hivatkozás létrehozása, sorozat létrehozása,

trigger létrehozása, típus létrehozása, eljárás létrehozása, operátor létrehozása

nak nek felhasználónév;

Ezek a jogok lehetővé teszik a csatlakozást és a munkamenet beállítását, az objektumok létrehozását és a PL/SQL objektumok tárolását. Objektumok csak a fióksémában hozhatók létre; nincs joga más számlák rendszeréhez. Az objektumok létrehozását a táblaterületi korlátok is korlátozzák.

A jogok hozzárendelésének másik lehetősége az, ha hozzáférést rendel a jogosulthoz, hogy más fiókokhoz hozzárendelje a jogokat. Például

rendszer/oracle csatlakoztatása;

Tábla létrehozásának engedélyezése scottnak adminisztrátori opcióval;

scott/tiger csatlakoztatása;

Tábla létrehozásának engedélyezése jonnak;

E parancsok végrehajtása lehetővé teszi a SCOTT számára, hogy táblákat hozzon létre a saját sémájában, és végrehajtsa a GRANT parancsot. A SCOTT engedélyt ad a JON felhasználónak táblák létrehozására, de a JON csak a JON sémában tud táblákat létrehozni. A 6-5. ábra az adatbázis-vezérlő felhasználói jogait mutatja; ugyanezt az információt kaphatjuk meg a DBA_SYS_PRIVS nézet lekérdezésével.

Ha a rendszerengedélyeket visszavonják, minden, amit az engedélyek birtokában tett, érvényben marad. Ha rendelkezett jogokkal az ADMIN OPTION segítségével, akkor minden felhasználó, akinek jogokat adott – a jogok megmaradnak, annak ellenére, hogy jogait visszavonták. Nincs feljegyzés arról, hogy ki osztotta ki pontosan a rendszerjogosultságokat, így lehetetlen elvenni a CASCADE jogokat, ahogy az a 6-6. ábrán látható.

A rendszerjogosultságok visszavonása nem történik lépcsőzetesen (ellentétben a

tárgyi jogosultság visszavonása).

BÁRMELY jog hozzáférést biztosít az adatbázisban lévő összes objektumhoz. És így

grant válasszon ki egy asztalt a scott számára

lehetővé teszi a SCOTT-fiók számára, hogy SELECT lekérdezést hajtson végre az összes adatbázissémában lévő összes táblán. A jogok ilyen átruházása rossz modornak minősül, és BÁRMELY jogot csak a DBA ruház át.

Valójában az ANY most nem olyan veszélyes, mint a korábbi kiadásoknál. Már nem

táblázatokat tartalmaz a SYS sémában, így az adatszótár továbbra is védett. De

ANY-t továbbra is rendkívül óvatosan kell használni, mivel eltávolít minden védelmet

felhasználói táblákból.

Tárgyi jogok

Az objektumjogok hozzáférést biztosítanak a DML és SELECT parancsok végrehajtásához a megfelelő objektumokon, valamint a PL/SQL objektumok végrehajtásához. Ezek a jogok nem léteznek a fiókséma objektumaira; ha a felhasználó rendelkezik CREATE TABLE rendszerjogosultsággal, az azt jelenti, hogy további jogosultságok nélkül SELECT és DML lekérdezéseket hajthat végre az általa létrehozott táblákra.

Az ANY jogosultságok, amelyek engedélyeket adnak a bekerült objektumokra

az adatbázisban lévő összes felhasználói fiók nem objektumjogosultság – ezek igen

rendszerjogosultságokat.

Az objektumjogok az objektumok különböző csoportjaira vonatkoznak

Parancs szintaxis

GRANT privilégiumot az objektumon a felhasználónévnek;

Például

Használhatja az ÖSSZES lehetőséget az engedélyek alkalmazásához az összes művelethez, vagy használhat egy adott tábla vagy nézet oszlopspecifikációját.

grant select on store.orders to scott;

frissítés(order_status) engedélyezése a store.orders oldalon a scott-nak;

grant all on store.regions to scott;

Ezek a parancsok lehetővé teszik a SCOTT-fiók számára, hogy SELECT lekérdezést hajtson végre a STORE séma ORDERS tábla összes oszlopában, de csak egy oszlopban frissítse az adatokat. A SCOTT-fiók a RÉGIÓK tábla összes tranzakciójához is hozzáfér. A 6-7. ábra az engedélyek hozzárendelésének eredményét mutatja az adatbázis-vezérlőben

Az oszlopszintű jogosultságok megadását gyakran rossz gyakorlatnak mondják

a hatalmas munkaterhelés miatt. Ha korlátozni kell az embereket

hozzáférést bizonyos oszlopokhoz, létrehozva egy olyan nézetet, amely csak azokat az oszlopokat mutatja

gyakran jobb alternatíva.

A WITH GRANT OPTION direktíva használatával a felhasználó átruházhatja jogait más fiókokra. Az Oracle információkat tárol arról, hogy ki kinek adott hozzáférést az objektum szintjén; ez lehetővé teszi a jogok visszavonását ezen információk birtokában. Vegyünk egy példát

connect store/admin123;

vevők támogatása a támogatási lehetőséggel rendelkező értékesítésekhez;

kapcsolja össze az értékesítést/eladást;

grant select a store.customers webhelyen a webalkalmazáshoz adományozási lehetőséggel;

connwebapp/oracle;

grant select on store.customers to scott;

connect store/admin123;

visszavonja a vevők kiválasztását az értékesítésből;

E parancsok végrehajtása után sem a SALES felhasználónak, sem a WEBAPP felhasználónak, sem a SCOTT felhasználónak nincs joga a STORE.CUSTOMERS táblában lévő SELECT parancsok végrehajtására.

Az objektumjogok visszavonása lépcsőzetesen történik (ellentétben a

Ebben a fejezetben megtudhatja, hogyan kell a jogosultságokkal dolgozni. A 2. fejezetben tárgyaltak szerint az SQL-t általában olyan környezetekben használják, amelyek felhasználói felismerést és a különböző rendszerfelhasználók megkülönböztetését igénylik. Általánosságban elmondható, hogy az adatbázis-adminisztrátorok maguk hoznak létre felhasználókat és adnak nekik jogosultságokat. Másrészt a táblákat létrehozó felhasználók jogosultak maguknak kezelni ezeket a táblákat. A jogosultságok határozzák meg, hogy a megadott felhasználó végre tudja-e hajtani parancsot adott. Számos típusú jogosultság létezik, amelyek többféle műveletnek felelnek meg. A jogosultságokat két SQL parancs adja és vonja vissza: GRANT és REVOKE. Ez a fejezet bemutatja, hogyan kell használni ezeket a parancsokat.

FELHASZNÁLÓK

Az SQL-környezetben minden felhasználónak van egy speciális azonosító neve vagy szám. A terminológia mindenhol más, de úgy döntöttünk (az ANSI-t követve), hogy erre vagy egy számra hivatkozunk hozzáférési azonosítóként (ID). Az adatbázisba küldött parancs egy adott felhasználóhoz van társítva; vagy más módon, egy speciális hozzáférési azonosító. Mivel egy SQL-adatbázishoz kapcsolódik, az engedélyazonosító a felhasználónév, és az SQL használhatja a speciális USER kulcsszót, amely az aktuális parancshoz társított hozzáférési azonosítóra utal. A parancs értelmezése és engedélyezése (vagy megtagadása) a parancsot kiadó felhasználó hozzáférési azonosítójához tartozó információk alapján történik.

BEJEGYZÉS

A többfelhasználós rendszereken van valamilyen bejelentkezési eljárás, amelyet a felhasználónak végre kell hajtania, hogy hozzáférjen a számítógépes rendszerhez. Ez az eljárás határozza meg, hogy melyik hozzáférési azonosító lesz társítva az aktuális felhasználóhoz. Általában az adatbázist használó minden személynek saját hozzáférési azonosítóval kell rendelkeznie, és regisztrációkor érvényes felhasználóvá válik. Azonban gyakran a sok feladattal rendelkező felhasználók különböző hozzáférési azonosítókkal jelentkezhetnek be, vagy fordítva, egy hozzáférési azonosítót több felhasználó is használhat. SQL szempontból nincs különbség a két eset között; a felhasználót egyszerűen hozzáférési azonosítójaként kezeli. Az SQL adatbázis használhatja a saját bejelentkezési eljárását, vagy engedélyezhet egy másik programot, mint pl operációs rendszer(a számítógépen futó fő program), dolgozza fel a regisztrációs fájlt, és szerezzen be egy hozzáférési azonosítót ebből a programból. Így vagy úgy, az SQL-nek lesz egy hozzáférési azonosítója, amelyet a műveleteihez társít, és ez lesz a USER kulcsszó, ami számít Önnek.

PRIVILEGE GRANT

Az SQL-adatbázis minden felhasználója jogosultságokkal rendelkezik. Ez az, amit a felhasználó megtehet (talán ez egy minimális jogosultságnak tekinthető naplófájl). Ezek a jogosultságok idővel változhatnak – újakat adnak hozzá, a régieket eltávolítják. E jogosultságok egy része az ANSI SQL-ben van meghatározva, de vannak további jogosultságok is, amelyekre szintén szükség van. Az ANSI által meghatározott SQL-jogosultságok a legtöbb valós élethelyzetben nem elegendőek. Másrészt a szükséges jogosultságok típusai a használt rendszertől függően változhatnak – erre vonatkozóan az ANSI nem tud javaslatot tenni. Azok a jogosultságok, amelyek nem részei az SQL-szabványnak, hasonló szintaxist használhatnak, és nem feltétlenül ugyanazok, mint a szabvány.

SZABVÁNYOS KIVÁLTSÁGOK

Az ANSI által meghatározott SQL-jogok objektumjogok. Ez azt jelenti, hogy a felhasználónak jogában áll az adott parancsot csak az adatbázis egy adott objektumán végrehajtani. Nyilvánvaló, hogy a jogosultságoknak különbséget kell tenniük ezek között az objektumok között, de egy kizárólag objektumjogosultságokon alapuló jogosultságrendszer nem képes mindent kielégíteni, amire az SQL-nek szüksége van, amint azt a fejezet későbbi részében látni fogjuk. Az objektumjogok mind a felhasználókhoz, mind a táblákhoz társítva vannak. Ez azt jelenti, hogy egy adott felhasználó egy adott táblán, vagy mögöttes táblán vagy nézeten jogosultságot kap. Ne feledje, hogy a táblát (bármilyen fajtát) létrehozó felhasználó a tábla tulajdonosa.

Ez azt jelenti, hogy a felhasználó minden jogosultsággal rendelkezik ebben a táblázatban, és átadhatja a jogosultságokat a táblázat többi felhasználójának. A felhasználóhoz rendelhető jogosultságok:

KIVÁLASZTÁS Az ezzel a jogosultsággal rendelkező felhasználó lekérdezéseket hajthat végre a táblán.

INSERT Az ezzel a jogosultsággal rendelkező felhasználó végrehajthat egy INSERT parancsot egy táblán.

UPDATE Az ezzel a jogosultsággal rendelkező felhasználó végrehajthat egy UPDATE parancsot egy táblán. Ezt a jogosultságot a táblázat meghatározott oszlopaira korlátozhatja.

DELETE Az ezzel a jogosultsággal rendelkező felhasználó végrehajthat egy DELETE parancsot egy táblán.

HIVATKOZÁSOK Az ezzel a jogosultsággal rendelkező felhasználó megadhat egy idegen kulcsot, amely a táblázat egy vagy több oszlopát használja szülőkulcsként. Ezt a jogosultságot meghatározott oszlopokra korlátozhatja. (Az idegen kulcsról és a szülőkulcsról bővebben a 19. fejezetben olvashat.)

Ezen túlmenően nem szabványos objektumjogokkal is találkozhat, mint például az INDEX (INDEX), amely egy index létrehozásának jogát ad egy táblán, a SYNONYM (SYNONYM) pedig egy objektum szinonimája létrehozásának jogát, amit a 23. fejezetben magyarázunk meg. , és az ALTER (CHANGING) lehetőséget ad az ALTER TABLE parancs végrehajtására egy táblán. Az SQL-motor ezeket a jogosultságokat a GRANT paranccsal rendeli hozzá a felhasználókhoz.

GRANT CSAPAT

Tegyük fel, hogy Diane felhasználónak van egy Customers táblája, és meg akarja engedni, hogy Adrian felhasználó lekérdezze azt. Diane ezután írja be a következő parancsot:

ADJA MEG Diane-nak az értékesítőket;

Adrian most lekérdezheti az Ügyfelek táblát. Egyéb kiváltságok nélkül csak értékeket választhat; de nem hajthat végre olyan műveletet, amely befolyásolná a Vevők tábla értékeit (beleértve a Vevők tábla használatát szülő idegen kulcs táblaként, ami korlátozza a Vevők tábla értékén végrehajtható változtatásokat).

Amikor az SQL GRANT parancsot kap, ellenőrzi a parancsot kiadó felhasználó jogosultságait, és megállapítja, hogy a GRANT parancs érvényes-e. Adrian maga nem adhatja ki ezt a parancsot. Másik felhasználónak sem adhat SELECT jogokat: a tábla továbbra is Diane tulajdona (később megmutatjuk, hogy Diane hogyan adhat Adrian SELECT jogokat más felhasználóknak).

A szintaxis ugyanaz, mint a többi jogosultság megadásakor. Ha Adrian az Eladók tábla tulajdonosa, akkor engedheti, hogy Diane sorokat írjon be a következő mondattal

ADJA MEG Diane-nak az értékesítőket; Most Diane-nek joga van új eladót tenni az asztalra.

KIVÁLTATÁSI CSOPORTOK, FELHASZNÁLÓI CSOPORTOK

Ne korlátozza magát egyetlen jogosultság megadására egyetlen felhasználónak a GRANT paranccsal. A jogosultságok vagy felhasználók vesszővel elválasztott listája teljesen elfogadható. Stephen mind a SELECT-et, mind az INSERT-et megadhatja Adriannak az Orders táblában

GRANT SELECT, INSERT ON parancsokat Adriannak; vagy mind Adrian, mind Diane esetében GRANT SELECT, INSERT ON Orders TO Adrian, Diane;

Ha a jogosultságok és a felhasználók ilyen módon vannak felsorolva, a jogosultságok teljes listája az összes megadott felhasználó számára biztosított. A szigorú ANSI értelmezés szerint nem adhat ki jogosultságokat egyszerre több táblához egyetlen paranccsal, de egyes implementációk enyhíthetik ezt a korlátozást azáltal, hogy lehetővé teszik több tábla megadását, vesszővel elválasztva, így a jogosultságok teljes listája megadható minden megadott táblázat..

A KIVÁLTSÁGOK KORLÁTOZÁSA AZ EGYES OSZLOPOKRA

Minden objektumjog ugyanazt a szintaxist használja, kivéve az UPDATE és REGERNCES parancsokat, amelyekhez nincs szükség oszlopnevekre. Az UPDATE jogosultság más jogosultságokhoz hasonlóan megadható:

FRISSÍTÉS AZ értékesítőkről Diane-nak;

Ez a parancs lehetővé teszi Diane számára, hogy módosítsa az Értékesítők táblázat bármelyik vagy összes oszlopában lévő értékeket. Ha azonban Adrian korlátozni akarja Diane-t például a jutalékok megváltoztatásában, akkor beléphet

FRISSÍTÉS (comm) NYÚJTÁSA Diane-nak az értékesítőkről;

Más szavakkal, egyszerűen meg kell adnia azt az oszlopot, amelyre az UPDATE jogosultságot alkalmazni kell, zárójelben a tábla neve után. Több táblázatoszlop neve is megadható tetszőleges sorrendben, vesszővel elválasztva:

FRISSÍTÉS NYÚJTÁSA (város, kommunikáció) AZ értékesítőkről Diane-nak;

HIVATKOZÁSOK ugyanezt a szabályt követi. Amikor megadja a REFERENCIA jogosultságot egy másik felhasználónak, az a felhasználó olyan idegen kulcsokat hozhat létre, amelyek szülőkulcsként hivatkoznak a táblázat oszlopaira. Az UPDATE-hez hasonlóan a REFERENCES jogosultság egy vagy több olyan oszlopot tartalmazó listát kaphat, amelyre a jogosultság korlátozott. Diane például megadhatja Stephennek a jogot, hogy az Ügyfelek táblát szülőkulcs-táblaként használja a következő paranccsal:

TÁMOGATÁSI REFERENCIÁK (cname, cnum) AZ ügyfelekről Istvánnak; Ez a parancs megadja Stephennek a jogot, hogy a cnum és cname oszlopokat bármely idegen kulcs szülőkulcsaként használja a tábláiban. Stephen irányíthatja, hogy ez hogyan történjen. Definiálhat (cname, cnum) vagy esetünkben (cnum, cname) kétoszlopos szülőkulcsként, amely egy idegen kulcson keresztül illeszt egy saját táblájának két oszlopát. Vagy létrehozhat külön idegen kulcsokat a nemre való egyéni hivatkozáshoz, így biztosítva, hogy Diane alkalmazza a szülői kulcsot (lásd a 19. fejezetet).

Az idegen kulcsok számainak korlátozása nélkül ezekre a szülőkulcsokra kell épülnie, és lehetővé kell tenni a különböző idegen kulcsok szülőkulcsainak átfedését.

Az UPDATE jogosultsághoz hasonlóan itt is kizárhatja az oszlopok listáját, és így engedélyezheti bármely és az összes oszlop szülőkulcsként való használatát. Adrian feljogosíthatja Diane-t a következő paranccsal:

REFERENCIÁK KIADÁSA Az értékesítőkről Diane-nak;

Természetesen a jogosultság csak azokon az oszlopokon lesz használható, amelyek rendelkeznek a szülőkulcsok által megkövetelt megszorításokkal.

AZ ÖSSZES ÉS NYILVÁNOS ÉRVEK HASZNÁLATA

Az SQL a GRANT parancs két argumentumát támogatja, amelyeknek különleges jelentése van: ALL PRIVILEGES (ALL PRIVILEGES) vagy csak ALL és PUBLIC (GENERAL). Az ALL a jogosultságnevek helyett a GRANT parancsban használatos a táblán lévő összes jogosultság megadásához. Például Diane ezzel a paranccsal megadhatja Stephennek a Vevők tábla teljes jogosultságát:

REFERENCIÁK KIADÁSA Az értékesítőkről Diane-nak;

(Az UPDATE és REFERENCES jogosultságok természetesen minden oszlopra érvényesek.) És ez egy másik módja annak, hogy ugyanezt mondjuk:

ADJA MEG MINDEN vásárlót Istvánnak;

NYILVÁNOS – inkább egy átfogó argumentumtípus, semmint felhasználói jogosultság. Amikor közzétételi jogosultságokat ad, minden felhasználó automatikusan megkapja azokat. Leggyakrabban ezt a SELECT jogosultsághoz használják bizonyos mögöttes táblákon vagy nézeteken, amelyeket bármely felhasználó számára elérhetővé kíván tenni. Például, hogy bármely felhasználó láthassa a Rendelések táblázatot, írja be a következőket:

NYILVÁNOSSÁGRA VONATKOZÓ RENDELÉSEK KIVÁLASZTÁSA;

Természetesen megadhat bármely vagy minden kiváltságot a társadalomnak, de ez nyilvánvalóan nem kívánatos. A SELECT kivételével minden jogosultság lehetővé teszi a felhasználó számára, hogy módosítsa (vagy a REFERENCIÁK esetén korlátozza) a táblázat tartalmát. Problémát okoz, ha engedélyezi minden felhasználó számára, hogy módosítsa a táblázatok tartalmát.

Még akkor is, ha van egy kis cége, amelynek minden jelenlegi felhasználója képes módosító parancsokat végrehajtani egy adott táblán, jobb lenne, ha minden egyes felhasználónak külön-külön jogosultságot adna, mint mindenkinek. A NYILVÁNOS átvitel nem korlátozódik csak a jelenlegi felhasználókra. Bármi Új felhasználó A rendszerhez hozzáadva automatikusan megkapja az összes korábban mindenkinek kiosztott jogosultságot, így ha a táblához való hozzáférést mindenkire korlátozni szeretné, most vagy a jövőben, a legjobb, ha a SELECT kivételével más jogosultságokat biztosít az egyes felhasználóknak.

TÁMOGATÁS TÁMOGATÁSI OPCIÓVAL

Néha egy tábla létrehozója azt akarja, hogy a többi felhasználó jogosultságokat szerezhessen az ő asztalán. Ez általában olyan rendszerekben történik, ahol egy vagy több személy létrehozza az adatbázisban található mögöttes táblák egy részét (vagy az összeset), majd átadja értük a felelősséget azoknak, akik ténylegesen dolgoznak rajtuk. Az SQL ezt a WITH GRANT OPTION záradékkal teszi lehetővé. Ha Diane azt akarja, hogy Adrian megadhassa a SELECT jogosultságot a Customers táblában más felhasználóknak, akkor a WITH GRANT OPTION záradék használatával megadja neki a SELECT jogosultságot:

TÁMOGATÁSI VÁLASZTÁS AZ ügyfeleknek Adriannak A TÁMOGATÁSI OPCIÓVAL; Ezt követően Adrian megszerezte a jogot arra, hogy a SELECT jogosultságot harmadik felekre ruházza át; ő adhat ki egy GRANT SELECT ON Diane-t.Ügyfelek Stephennek; vagy akár GRANT SELECT ON Diane.Ügyfelek Stephennek GRANT OPTION; Az a felhasználó, aki egy adott táblán egy adott jogosultsággal rendelkezik GRANT OPTION, viszont megadhatja ezt a jogosultságot ugyanazon a táblán, GRANT OPTION-mal vagy anélkül, bármely más felhasználónak. Ez magának a táblázatnak a tulajdonjogán nem változtat; mint korábban, a táblázat az alkotóé. (Ezért a feljogosított felhasználóknak előtagot kell adniuk a tulajdonos hozzáférési azonosítóját, amikor hivatkoznak ezekre a táblákra. A következő fejezetben megtudhatja, hogyan.) Az adott táblán az összes jogosultsággal rendelkező GRANT OPTION-val rendelkező felhasználó teljes jogosultsággal rendelkezik a táblán.

A KIVÁLTSÁGOK ELFOGADÁSA

Ugyanúgy, ahogy az ANSI a CREATE TABLE parancsot adja a táblázat létrehozásához, nem pedig a DROP TABLE parancsot, hogy megszabaduljon tőle, a GRANT parancs lehetővé teszi, hogy jogosultságokat adjon a felhasználóknak anélkül, hogy módot adna a visszavételre. A jogosultságok eltávolításának szükségessége a REVOKE parancsra vezethető vissza, amely valójában egy szabványos szolgáltatás, meglehetősen világos jelöléssel. A REVOKE szintaxis hasonló a GRANT-hoz, de fordított. Ha el szeretné távolítani Adrian INSERT jogosultságát a Rendelések táblából, akkor gépeljen

REVOKE INSERT ON Orders FROM FROM FROM;

A jogosultság- és felhasználólisták használata itt is megengedett, mint a GRANT esetében, így a következő parancsot adhatja meg:

AZ Adrian, Stephen ügyfelek BESZÁMOLÁSÁNAK VISSZAVONÁSA, TÖRLÉSE; Itt azonban van némi kétértelműség. Kinek van joga megvonni a kiváltságokat? Mikor veszíti el ezt a jogát az a felhasználó, aki jogosult a jogosultságokat másokra átruházni? Vajon azok a felhasználók is elveszítik ezeket a jogosultságokat? Mivel ez nem egy szabványos szolgáltatás, ezekre a kérdésekre nincs hiteles válasz, de a leggyakoribb megközelítés: * A jogosultságokat az azokat megadó felhasználó vonja vissza, és a visszavonás lépcsőzetes lesz, azaz automatikusan átterjed az összes jogosult felhasználóra. azt a kiváltságot tőlük .

A NÉZETEK HASZNÁLATA A KIVÁLTSÁGOK SZŰRÉSÉRE

A nézetekkel precízebbé teheti a jogosultsági műveleteket. Valahányszor jogosultságot ad egy alaptáblázatra egy felhasználónak, az automatikusan átkerül az összes sorba, és az esetleges UPDATE és REFERENCES kivételekkel a tábla összes oszlopába. Ha olyan nézetet hoz létre, amely az alapul szolgáló táblára hivatkozik, majd a jogosultságot a nézetre, nem pedig a táblára viszi át, ezeket a jogosultságokat a nézetben található lekérdezés bármely kifejezésére korlátozhatja. Ez nagymértékben javítja a GRANT parancs alapvető képességeit.

KI LÉTREHOZHAT PÁLYÁZATOKAT?

Nézet létrehozásához SELECT jogosultsággal kell rendelkeznie minden olyan táblában, amelyre a nézetben hivatkozik. Ha a nézet módosítható, a mögöttes táblán lévő INSERT, UPDATE és DELETE jogosultságok automatikusan átkerülnek a nézetbe. Ha nem rendelkezik módosítási jogosultságokkal az alapul szolgáló táblákon, akkor nem fogja tudni használni azokat a létrehozott nézetekben, még akkor sem, ha maguk a nézetek módosíthatók. Mivel a nézetek nem használnak idegen kulcsokat, a REFERENCES jogosultság soha nem kerül felhasználásra nézetek létrehozásakor. Mindezeket a korlátozásokat az ANSI határozza meg. Nem szabványos rendszerjogosultságok (amelyekről ebben a fejezetben később lesz szó) is engedélyezhetők. A következő szakaszokban feltételezzük, hogy az általunk tárgyalt nézetkészítők privát vagy megfelelő jogosultságokkal rendelkeznek az összes mögöttes táblán.

A KIVÁLASZTÁSI JOG KORLÁTOZÁSA BIZONYOS OSZLOPOKRA

Tegyük fel, hogy lehetőséget kíván adni a Claire felhasználónak, hogy csak az Értékesítők tábla snum és sname oszlopait lássa. Ezt úgy teheti meg, hogy elhelyezi ezen oszlopok nevét a nézetben

NÉZET LÉTREHOZÁSA Clairesview AS SELECT snum, sname FROM Salespeople; és adja meg Claire-nek a KIVÁLASZTÁSI jogosultságot a nézetben, ne magában az Értékesítők táblában: GRANT SELECT On Clairesview Claire-nek; Kifejezetten az oszlopokhoz hozhat létre jogosultságokat, például más jogosultságokat is, de az INSERT parancsnál ez alapértelmezett értékek beszúrását jelenti, a DELETE parancsnál pedig az oszlopkényszer nem számít. A REFERENCES és UPDATE jogosultságok természetesen egyedivé tehetik az oszlopokat anélkül, hogy nézetet kellene igénybe venni.

BIZONYOS SOROKRA VONATKOZÓ JOGOSULTSÁGOK KORLÁTOZÁSAÁltalában a nézetekkel való jogosultságok szűrésének hasznosabb módja egy nézet használata, így a jogosultság csak bizonyos sorokra vonatkozik. Ezt természetesen megteheti egy predikátum használatával a nézeten, amely meghatározza, hogy mely sorok szerepeljenek. Ahhoz, hogy Adrian felhasználónak UPDATE jogosultságot biztosítson az Ügyfelek táblázatban minden londoni ügyfél számára, létrehozhat egy ilyen nézetet:

NÉZET LÉTREHOZÁSA Londoncust AS SELECT * FROM Ügyfelek WHERE city = "London" ELLENŐRZÉSI OPCIÓVAL; Ezután meg kell adnia az UPDATE jogosultságot ezen az asztalon Adriannak: GRANT UPDATE ON Londoncust Adrian; Ez a különbség az egyes sorokra vonatkozó jogosultság és az egyes oszlopokra vonatkozó UPDATE jogosultság között, amely az Ügyfelek tábla összes oszlopára vonatkozik, de nem azokra a sorokra, amelyek között a Londontól eltérő városi nemű sorokat nem veszik figyelembe. . A WITH CHECK OPTION záradék megakadályozza, hogy Adrian a mező értékét Londonon kívül bármi másra módosítsa. CSAK A KINYÚJTOTT ADATOKHOZ BIZTOSÍTÁSA Egy másik lehetőség az, hogy a felhasználóknak hozzáférést biztosítanak a már letöltött adatokhoz, nem pedig a táblázatban szereplő tényleges értékekhez. Az összesített függvények nagyon hasznosak lehetnek ilyen módon. Létrehozhat egy nézetet, amely megadja a rendelések számát, átlagát és végösszegét az egyes rendelési napokra: CREATE VIEW Datetotals AS SELECT odate, COUNT (*), SUM (amt), AVG (amt) FROM Orders GROUP BY odate; Most megadja Diane felhasználónak a KIVÁLASZTÁSI jogosultságot a Dátumösszeg nézetben: GRANT SELECT ON Datetotals TO Diane; A NÉZETEK HASZNÁLATA A KORLÁTOZÁSOK ALTERNATÍVÁJAKÉNT A 18. fejezetben ismertetett sorozat egyik legújabb alkalmazása a WITH CHECK OPTION nézetek használata a megszorítások alternatívájaként. Tegyük fel, hogy meg akart győződni arról, hogy az Értékesítési táblázatban szereplő összes városi nemi érték azon városok valamelyikében található, ahol a cége jelenleg irodával rendelkezik. Közvetlenül a város oszlopban is beállíthat ELLENŐRZÉSI kényszert, de később nehéz lehet megváltoztatni, ha például a cége más részlegeket nyit ott. Alternatív megoldásként létrehozhat egy nézetet, amely kizárja az érvénytelen városértékeket: CREATE VIEW Curcities AS SELECT * FROM Salespeople WHERE city IN ("London", "Róma", "San Jose", "Berlin") AZ ELLENŐRZÉSI OPCIÓVAL; Mostantól ahelyett, hogy módosítási jogosultságokat adna a felhasználóknak a Szállítók táblában, megadhatja azokat a Curcities nézetben. Ennek a megközelítésnek az az előnye, hogy ha módosítania kell, törölheti a nézetet, létrehozhat egy újat, és jogosultságokat adhat a felhasználóknak az új nézetben, ami egyszerűbb, mint a korlátozások megváltoztatása. Hátránya, hogy a Salespersons tábla tulajdonosának is ezt a nézetet kell használnia, ha nem akarja, hogy a saját parancsait elutasítsák. Másrészt ez a megközelítés lehetővé teszi a tábla tulajdonosának és bárki másnak, hogy a nézet helyett magán a táblán szerezzenek módosítási jogosultságokat, hogy kivételeket tegyenek a megszorítások alól.

Ez gyakran kívánatos, de nem kivitelezhető, ha megszorításokat használ az alapul szolgáló táblán. Sajnos ezek a kivételek nem lesznek láthatóak a nézetben. Ha ezt a megközelítést választja, létre kell hoznia egy második nézetet, amely csak kivételeket tartalmaz: CREATE VIEW Othercities AS SELECT * FROM Salespeople WHERE city NOT IN ("London", "Róma", "San Jose", "Berlin") WITH OPCIÓ ELLENŐRZÉSE; Ebben a nézetben csak a KIVÁLASZTÁSI jogosultságot kell megadnia a felhasználóknak, így láthatják a kizárt sorokat, de nem helyezhetnek el érvénytelen városértékeket az alapul szolgáló táblázatba. Valójában a felhasználók mindkét nézetet lekérdezhetik egy unióban, és egyszerre láthatják az összes sort.

A KIVÁLTSÁGOK EGYÉB TÍPUSAI

Természetesen először azt szeretné tudni, hogy kinek van joga létrehozni a táblázatot. Ez a jogosultsági terület nem ANSI, de nem bírálható felül - c. Minden szabványos ANSI-jogosultság ebből a jogosultságból származik; táblakészítői jogosultságok, amelyek átadhatják az objektumjogokat. Ha az összes felhasználó különböző méretű alaptáblázatokat hoz létre a rendszerben, az redundanciához és a rendszer hatékonyságának csökkenéséhez vezet. Más kérdések is eszembe jutnak:

Kinek van joga módosítani, törölni vagy korlátozni a táblákat?

Az alaptáblázatok létrehozására vonatkozó engedélyeknek különbözniük kell a nézetek létrehozására vonatkozó engedélyektől?

Kell-e szuperfelhasználó – az a felhasználó, aki felelős az adatbázis karbantartásáért, és ezért a legtöbb vagy az összes olyan jogosultsággal rendelkezik, amelyet nem egyénileg biztosítanak?

Amíg az ANSI nem vesz részt, és az SQL-t különféle környezetekben nem használják, addig nem tudunk ezekre a kérdésekre határozott választ adni. Javasoljuk, hogy itt vegyünk figyelembe a legáltalánosabb következtetések egy darabját.

A nem speciális adatobjektumokkal meghatározott jogosultságokat rendszerjogoknak vagy adatbázisjogoknak nevezzük. Alapszinten ezek valószínűleg magukban foglalják az adatobjektumok létrehozásának jogát, amelyek valószínűleg különböznek az alaptáblázatoktól (jellemzően néhány felhasználó által létrehozott) és nézetektől (amelyeket jellemzően a felhasználók többsége hoz létre). A nézetek létrehozásához szükséges rendszerjogosultságok kiegészíthetik, nem pedig helyettesíthetik azokat az objektumjogosultságokat, amelyeket az ANSI megkövetel a nézetkészítőktől (amelyeket a fejezet korábban ismertetett). Ezenkívül bármilyen méretű rendszerben mindig vannak bizonyos típusú szuperfelhasználók - olyan felhasználók, akik automatikusan rendelkeznek a legtöbb vagy az összes jogosultsággal -, és akik egy jogosultságon vagy jogosultságcsoporton keresztül átruházhatják szuperfelhasználói státuszukat valakire. Az adatbázis-adminisztrátor vagy DBA a leggyakrabban használt kifejezés az ilyen szuperfelhasználókra és a hozzá tartozó jogosultságokra.

JELLEMZŐ RENDSZER KIVÁLTSÁGOK

Nál nél Általános megközelítés Három alapvető rendszerjogosultság létezik: - CONNECT (Connect), - RESOURCE (erőforrás) és - DBA (adatbázis-adminisztrátor). Egyszerűen fogalmazva, a CONNECT a regisztráció jogából, valamint a nézetek és szinonimák létrehozásának jogából áll (lásd a 23. fejezetet), ha átadják az objektumjogokat. A FORRÁS az alaptáblázatok létrehozásának jogából áll. A DBA egy szuperfelhasználói jogosultság, amely magas jogosultságot biztosít a felhasználónak az adatbázis felett. Egy vagy több adatbázis-adminisztrátor felhasználó rendelkezhet ezzel a jogosultsággal. Egyes rendszereknek van egy speciális felhasználója is, amelyet néha SYSADM-nek vagy SYS-nek (Database System Administrator) hívnak, és akinek a legmagasabb jogosultsága van; ez számukra különleges, nem csak egy speciális DBA-jogosultsággal rendelkező felhasználó. Valójában csak egy személy regisztrálhat SYSADM néven hozzáférési azonosítóként. A megkülönböztetés nagyon finom, és másképpen működik különféle rendszerek. Céljaink szempontjából egy kiemelten kiváltságos felhasználóra gondolunk, aki adatbázist fejleszt és kezel DBA jogosultsággal, megértve, hogy ez a jogosultság valójában ugyanaz a jogosultság. A GRANT parancs módosított formában objektum- és rendszerjogosultságokkal is használható. Kezdetben a jogok átruházása egy DBA segítségével történhet. Például a DBA a következőképpen adhatja meg a tábla létrehozásának jogát Rodriguez felhasználónak: ERŐFORRÁS KIADÁSA Rodrigueznek;

FELHASZNÁLÓK LÉTREHOZÁSA ÉS TÖRLÉSE

Természetesen felmerül a kérdés, hogy honnan lesz a Rodriguez nevű felhasználó? Hogyan határozható meg a tűrésazonosítója? A legtöbb megvalósításban a DBA úgy hozza létre a felhasználót, hogy automatikusan megadja neki a CONNECT jogosultságot. Ebben az esetben általában egy AZONOSÍTOTT záradékot adnak hozzá, amely megadja a jelszót. (Ha nem, akkor az operációs rendszernek meg kell határoznia, hogy a megadott hozzáférési azonosítóval be tud-e jelentkezni az adatbázisba.) A DBA például beírhatja a GRANT CONNECT TO Thelonius IDENTIFIED BY Redwagon parancsot; amely létrehoz egy Thelonius nevű felhasználót, megadja neki a regisztráció jogát, és hozzárendeli a Redwagon jelszót, mindezt egy mondatban. Mivel Thelonious már hitelesített felhasználó, ő vagy a DBA ugyanazt a parancsot használhatja a Redwagon jelszavának megváltoztatására. Bár kényelmes, ennek a megközelítésnek még mindig vannak korlátai. Lehetetlen, hogy olyan felhasználó legyen, aki nem tud regisztrálni, legalább átmenetileg. Ha meg akarja akadályozni egy felhasználó regisztrációját, akkor a REVOKE CONNECT jogosultságot kell használnia, amely "törli" a felhasználót. Egyes megvalósítások lehetővé teszik a felhasználók létrehozását és törlését, függetlenül a bejelentkezési jogosultságuktól. Amikor megadja a CONNECT jogosultságot egy felhasználónak, létrehozza azt a felhasználót. Ehhez azonban DBA-jogosultsággal kell rendelkeznie. Ha ez a felhasználó alaptáblázatokat (nem csak nézeteket) fog létrehozni, akkor az ERŐFORRÁS jogosultságot is meg kell adni neki. Ez azonban azonnal újabb problémát okoz. Ha megpróbálja eltávolítani egy olyan felhasználó CONNECT jogosultságát, akinek táblái vannak létrehozva, a parancs elutasításra kerül, mert a művelet tulajdonos nélkül hagyná a táblát, ami nem megengedett. Először el kell távolítania a felhasználó által létrehozott összes táblát, mielőtt eltávolítaná CONNECT-jogosultságát. Ha ezek a táblák nem üresek, akkor valószínűleg egy lekérdezést használó INSERT paranccsal szeretné átadni az adataikat más tábláknak. Nem kell külön eltávolítania az ERŐFORRÁS jogosultságot; a felhasználó törléséhez elegendő a CONNECT törlése. Bár a fentiek mindegyike a rendszerjogosultságok meglehetősen szabványos megközelítése, jelentős korlátai is vannak. Alternatív megközelítések jelentek meg, amelyek specifikusabbak és pontosabban kezelik a rendszerjogosultságokat.

Ezek a megállapítások valamelyest kívülre vezetnek a jelenleg definiált SQL-szabványon, és bizonyos megvalósításokban teljesen kívül eshetnek az SQL-szabványon. Ezek a dolgok valószínűleg nem érintik túlságosan, hacsak nem DBA vagy felhasználó. magas szint. A rendszeres felhasználóknak csak elvileg ismerniük kell a rendszerjogosultságokat, csak speciális üzenetek esetén tekinthetik meg a dokumentációjukat.

ÖSSZEFOGLALÁS

A jogosultságok lehetővé teszik, hogy az SQL-t új szemszögből tekintse meg, amikor az SQL speciális felhasználókon keresztül hajt végre műveleteket egy speciális adatbázisrendszerben. Maga a GRANT parancs meglehetősen egyszerű: ezzel bizonyos objektumjogokat ad egy vagy több felhasználónak. Ha megadja a WITH GRANT OPTION jogosultságot egy felhasználónak, az a felhasználó megadhatja ezt a jogosultságot másoknak. Most már megértette a nézetekre vonatkozó jogosultságok használatára vonatkozó utalásokat – az alaptáblák jogosultságának növelésére vagy a korlátozások alternatívájaként – és ennek néhány előnyét és hátrányát. A rendszerjogosultságokat, amelyek szükségesek, de kívül esnek az SQL szabvány hatókörén, a legáltalánosabb formájukban tárgyaltuk, így ezeket a gyakorlatok során megtanulhatja. A 23. fejezet folytatja az SQL-ben levonható következtetésekről szóló vitát, mint például a változtatások mentése vagy visszaállítása, saját nevek létrehozása mások tábláinak, valamint annak megértése, hogy mi történik, ha különböző felhasználók egyszerre próbálnak hozzáférni ugyanahhoz az objektumhoz.

SQL-lel dolgozni

1. Adja meg Janetnek a jogot az ügyfél becslésének megváltoztatására.

2. Adja meg Stephannak azt a jogot, hogy más felhasználóknak is jogot adjon lekérdezésekhez a Rendelések táblában.

3. Vonja vissza az INSERT(INSERT) jogosultságot a Szállítók táblán Claire-től és minden olyan felhasználótól, akinek megadták.

4. Adja meg Jerrynek a Vevők tábla beszúrásának vagy módosításának jogát, miközben megőrzi képességét a 100 és 500 közötti tartományban lévő értékek értékelésére.

5. Engedje meg Janetnek, hogy lekérdezze a Vevők táblát, de akadályozza meg, hogy csökkentse a pontszámokat ugyanabban a Vevők táblában.

GRANT priv_type [(oszloplista)] [, priv_type [(oszlop_lista)] ...] BE (tbl_name | * | *.* | db_name.*) A felhasználónévhez "jelszó"] [, felhasználónév ...] ] ] ] ] Priv_type [(oszloplista)] [, priv_type [(oszloplista)] ...] BE (tbl_name | * | *.* | db_name.*) FROM user_name [, user_name ...]

A GRANT a 3.22.11-es és újabb verziók óta szerepel a MySQL-ben. A MySQL korábbi verzióiban a GRANT utasítás nem tesz semmit.

A GRANT és REVOKE parancsok lehetővé teszik a rendszergazdák számára, hogy MySQL-felhasználókat hozzanak létre, és négy szintű jogosultságon adjanak vagy vonjanak vissza felhasználói jogokat:

Globális szinten A globális jogosultságok a megadott kiszolgálón lévő összes adatbázisra vonatkoznak. Ezeket a jogosultságokat a mysql.user tábla tárolja. Adatbázis réteg Az adatbázis-jogosultságok a megadott adatbázis összes táblájára vonatkoznak. Ezeket a jogosultságokat a mysql.db és mysql.host táblák tárolják. Asztali szint A táblázatjogok a megadott tábla összes oszlopára vonatkoznak. Ezeket a jogosultságokat a mysql.tables_priv tábla tárolja. Oszlopszint Az oszlopjogok a megadott tábla egyes oszlopaira vonatkoznak. Ezeket a jogosultságokat a mysql.columns_priv tábla tárolja.

Ha jogosultságokat kap egy nem létező felhasználó, akkor az a felhasználó jön létre. A GRANT parancs működésére lásd a 4.3.5 Új felhasználók hozzáadása a MySQL-hez szakaszt.

A táblázat felsorolja a priv_type paraméter lehetséges értékeit a GRANT és REVOKE utasításokhoz:

MINDENAz összes egyszerű jogosultságot beállítja, kivéve a WITH GRANT OPTION
VÁLTOZTATLehetővé teszi az ALTER TABLE használatát
TEREMTLehetővé teszi a CREATE TABLE használatát
IDEIGLENES ASZTALOK LÉTREHOZÁSALehetővé teszi a CREATE TEMPORARY TABLE használatát
TÖRÖLLehetővé teszi a DELETE használatát
CSEPPLehetővé teszi a DROP TABLE használatát.
VÉGREHAJTÁSLehetővé teszi a felhasználó számára tárolt eljárások futtatását (MySQL 5.0 esetén)
FÁJLLehetővé teszi a SELECT... INTO OUTFILE és LOAD DATA INFILE használatát.
INDEXLehetővé teszi a CREATE INDEX és a DROP INDEX használatát
BESZÁLLÍTÁSLehetővé tesz az INSERT használatával
LOCK ASZTALOKLehetővé teszi a LOCK TABLES használatát a SELECT jogosultsággal rendelkező táblákon.
FOLYAMATLehetővé teszi a TELJES FOLYAMAT LISTA MUTATÁSA használatát
IRODALOMFenntartva későbbi használatra
ÚJRATÖLTÉSLehetővé teszi a FLUSH használatát
REPLIKÁCIÓS KLIENSJogot ad a felhasználónak, hogy lekérdezze a szülő- és szolgakiszolgálók helyét.
REPLIKÁCIÓS SLAVEKötelező a szolga kiszolgálókhoz a replikáció során (a szülőkiszolgáló bináris naplóiból származó információk beolvasásához).
KIVÁLASZTÁSLehetővé teszi a SELECT használatát
ADATBÁZISOK MUTATÁSAADATBÁZISOK MUTATÁSA az összes adatbázist megjeleníti.
LEÁLLITÁSLehetővé teszi a mysqladmin leállítás használatát
SZUPERLehetővé teszi egy kapcsolat létrehozását (egyszer), még akkor is, ha eléri a max_connections értéket, és a CHANGE MASTER , KILL szál , mysqladmin debug , PURGE MASTER LOGS és SET GLOBAL parancsok futtatását
FRISSÍTÉSLehetővé teszi az UPDATE használatát
HASZNÁLATA "jogok nélkül" szinonimája.

A USAGE érték akkor állítható be, ha jogosultság nélküli felhasználót szeretne létrehozni.

Az IDEIGLENES TÁBLÁZATOK LÉTREHOZÁSA , VÉGREHAJTÁSA , TÁBLÁZATOK ZÁROLÁSA , REPLIKÁCIÓ ... , ADATBÁZISOK MEGJELENÍTÉSE és SUPER jogosultságok újak a 4.0.2-es verzióban. Az új jogosultságok használatához a 4.0.2-es verzióra való frissítés után futtassa a mysql_fix_privilege_tables parancsfájlt.

A MySQL régebbi verzióiban a PROCESS jogosultság ugyanazokat a jogokat biztosítja, mint az új SUPER jogosultság.

A felhasználó GRANT paranccsal adott jogosultságainak visszavonásához használja a priv_type értéket a GRANT OPTION-ban:

Mysql> REVOKE GRANT OPTION ON ... FROM ...;

Egy táblához csak a következő priv_type értékek adhatók meg: SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , GRANT , I NDEX és ALTER .

Az egyetlen oszlophoz megadható priv_type értékek (a column_list utasítás használatakor): SELECT , INSERT és UPDATE .

A globális jogosultságok az ON *.* szintaxissal, az adatbázis-jogosultságok pedig az ON db_name.* szintaxissal állíthatók be. Ha az ON * értéket adja meg, miközben az aktuális adatbázis meg van nyitva, akkor a jogosultságok az adatbázishoz lesznek beállítva. ( Figyelem: ha megadja az ON * mikor hiány Nyissa meg az aktuális adatbázist, ez hatással lesz a globális jogosultságokra!)

Annak érdekében, hogy meg lehessen határozni az engedélyeket bizonyos számítógépekről származó felhasználók számára, a MySQL lehetőséget biztosít egy felhasználónév (user_name) megadására az űrlapon. Ha meg kell adnia egy felhasználó karakterláncot, amely tartalmazza Különleges szimbólumok(például "-") vagy a speciális vagy helyettesítő karaktereket (például "%") tartalmazó sztring gazdagéphez mellékelheti a nevet távoli számítógép vagy a felhasználó idézőjelben (például "teszt-felhasználó"@"teszt-állomásnév").

Helyettesítő karakterek is használhatók a távoli számítógép nevében. Például a „%.loc.gov” a loc.gov tartomány összes távoli számítógépének felhasználójára utal, a „144.155.166.%” pedig a 144.155.166 C osztályú alhálózat összes távoli számítógépének felhasználójára utal.

Az egyszerű űrlapfelhasználó a "%" szinonimája.

A MySQL nem támogatja a helyettesítő karaktereket a felhasználónevekben. A névtelen felhasználók meghatározása a User="" rekordok beszúrásával történik a mysql.user táblában, vagy egy üres névvel rendelkező felhasználó létrehozásával a GRANT paranccsal.

jegyzet: ha névtelen felhasználók csatlakozhatnak a MySQL szerverhez, akkor jogosultságokat kell adnia minden helyi felhasználónak, mint helyi számítógép a mysql.user tábla az anonim felhasználó bejelentkezését fogja használni!

Annak ellenőrzéséhez, hogy ez történik-e a számítógépén, futtassa a következő lekérdezést:

mysql> SELECT Host,User FROM mysql.user WHERE User="";

Tovább Ebben a pillanatban a GRANT parancs legfeljebb 60 karakter hosszúságú távoli számítógép-, tábla-, adatbázis- és oszlopneveket támogat. A felhasználónév legfeljebb 16 karakterből állhat.

A táblákhoz vagy oszlopokhoz tartozó jogosultságok a logikai VAGY operátor használatával képezhetők ki mind a négy szint jogosultságaiból. Ha például a mysql.user tábla megadja, hogy a felhasználó globális SELECT jogosultsággal rendelkezik, akkor ez a jogosultság nem kerül visszavonásra adatbázis-, tábla- vagy oszlopszinten.

Az oszlophoz tartozó jogosultságok a következőképpen számíthatók ki:

Globális jogosultságok VAGY (adatbázis-jogosultságok ÉS távoli számítógép-jogosultságok) VAGY táblajogosultságok VAGY oszlopjogosultságok

A legtöbb esetben a felhasználói jogok csak egy jogosultsági szinten vannak meghatározva, így ez az eljárás általában nem olyan bonyolult, mint a fent leírtak. részletes információk A jogosultságok ellenőrzéséhez szükséges lépések sorrendjét a 4.2 Általános biztonsági problémák és a MySQL hozzáférési jogosultsági rendszer című szakasz tartalmazza.

Ha olyan felhasználó/távoli gép kombinációhoz adnak jogosultságokat, amelyek nem szerepelnek a mysql.user táblában, akkor a rendszer hozzáad egy bejegyzést az utóbbihoz, és mindaddig a táblában marad, amíg el nem távolítja a DELETE paranccsal. Más szóval, a GRANT parancs létrehozhat felhasználói rekordokat a táblában, de a REVOKE parancs nem törölheti azokat. Ezt a DELETE paranccsal kell megtenni.

Ha rendelkezik adatbázis-jogosultságokkal, szükség szerint bejegyzés jön létre a mysql.db táblában. Ez a bejegyzés törlődik, ha az adatbázisban lévő összes jogosultságot eltávolítják a REVOKE paranccsal.

Ha a felhasználónak nincsenek jogosultságai a táblához, akkor a tábla nem jelenik meg, amikor a felhasználó táblák listáját kéri (például a SHOW TABLES utasítás használatával).

A WITH GRANT OPTION utasítás lehetővé teszi a felhasználó számára, hogy a megadott jogosultsági szinten olyan jogosultságokat biztosítson más felhasználóknak, amelyekkel ők maguk rendelkeznek. A GRANT jogosultság megadásakor körültekintően kell eljárni, mert két különböző jogosultsággal rendelkező felhasználó kombinálhatja jogosultságait!

A MAX_QUERIES_PER_HOUR # , MAX_UPDATES_PER_HOUR # és MAX_CONNECTIONS_PER_HOUR # opciók újak a MySQL 4.0.2-es verziójában. Ezek a beállítások korlátozzák a felhasználó által egy óra alatt végrehajtható kérések, frissítések és bejelentkezések számát. Ha 0-ra van állítva (alapértelmezett), az azt jelenti, hogy erre a felhasználóra nincsenek korlátozások. Lásd a részt.

Nem biztosíthat más felhasználónak olyan jogosultságot, amellyel Ön nem rendelkezik. A GRANT jogosultság csak azokat a jogosultságokat teszi lehetővé, amelyekkel rendelkezik.

Vegye figyelembe, hogy ha egy felhasználóhoz egy adott jogosultsági szinten GRANT jogosultság van hozzárendelve, akkor minden olyan jogosultságot, amellyel a felhasználó már rendelkezik (vagy a jövőben meg fog adni!) ezen a szinten, szintén megadhatja az adott felhasználó. Tegyük fel, hogy egy felhasználó megkapta az INSERT jogosultságot egy adatbázisban. Ha ezután megadja a SELECT jogosultságot az adatbázisban, és megadja a WITH GRANT OPTION lehetőséget, a felhasználó nem csak a SELECT jogosultságot, hanem az INSERT-t is megadhatja. Ha ezután megadja a felhasználónak az UPDATE jogosultságot az adatbázisban, akkor a felhasználó hozzárendelheti az INSERT , SELECT és UPDATE parancsot.

Az ALTER jogosultságokat nem szabad normál felhasználóknak megadni. Ez lehetőséget ad a felhasználónak, hogy a táblák átnevezésével megtörje a jogosultsági rendszert!

Vegye figyelembe, hogy ha tábla- vagy oszlopjogosultságokat használ, még egy felhasználó esetében is, a szerver minden felhasználó tábla- és oszlopjogosultságát ellenőrzi, és ez valamelyest lelassítja a MySQL-t.

A mysqld indításakor minden jogosultság beolvasódik a memóriába. Az adatbázis-, tábla- és oszlopjogok azonnal, míg a felhasználói szintű jogosultságok a következő csatlakozáskor lépnek érvénybe. A jogosultság-hozzárendelési táblákon a GRANT és REVOKE parancsokkal végrehajtott módosításokat a kiszolgáló azonnal feldolgozza. Ha manuálisan módosítja a jogosultság-hozzárendelési táblákat (az INSERT, UPDATE stb. használatával), akkor le kell futtatnia egy FLUSH PRIVILEGES vagy mysqladmin flush-privilege utasítást, amely utasítja a kiszolgálót a jogosultság-hozzárendelési táblák újratöltésére. Lásd: 4.3.3 Amikor a jogosultságok módosítása életbe lép.

A legjelentősebb különbségek a GRANT parancs ANSI SQL és MySQL verziói között a következők:

  • BAN BEN MySQL jogosultságok a felhasználónév + távoli számítógép kombinációhoz van hozzárendelve, nem csak a felhasználónévhez.
  • Az ANSI SQL nem rendelkezik globális és adatbázis-szintű jogosultságokkal, és az ANSI SQL nem támogatja az összes MySQL-jogtípust. A MySQL viszont nem támogatja az ANSI SQL TRIGGER , EXECUTE vagy UNDER jogosultságokat.
  • Az ANSI SQL jogosultsági struktúra hierarchikus. Ha töröl egy felhasználót, a felhasználóhoz rendelt összes jogosultság visszavonásra kerül. A MySQL-ben a hozzárendelt jogosultságokat nem vonják vissza automatikusan, azokat szükség esetén el kell távolítani.
  • A MySQL-ben a felhasználó használhat INSERT utasítást egy táblán, ha a tábla csak néhány oszlopában rendelkezik INSERT jogosultsággal. Az INSERT jogosultsággal nem rendelkező oszlopok alapértelmezett értékei lesznek. Az ANSI SQL minden oszlopban INSERT jogosultságot igényel.
  • Amikor eldob egy táblát az ANSI SQL-ben, a táblán lévő összes jogosultság visszavonásra kerül. Ha visszavon egy jogosultságot az ANSI SQL-ben, akkor az adott jogosultság alapján biztosított összes jogosultság is visszavonásra kerül. A MySQL-ben a jogosultságok csak a REVOKE paranccsal vagy a MySQL jogosultság-hozzárendelési tábláinak módosításával távolíthatók el.

A REQUIRE használatának leírását lásd: 4.3.9 Biztonságos kapcsolatok használata.

Felhasználói megjegyzések

Közzétette: Frank Wortner[Törlés][Szerkesztés]

Nem volt gondom az ld-vel. DEC (Compaq) esetleg
javított ld-t egy patch készletben. Lehet, hogy szeretné
telepítse a Digital Unix legújabb javítókészletét
(Tru64 Unix) a MySQL felépítése előtt. patch készletek
címen érhetők el
href=http://ftp.support.compaq.com/public/unix/ >
http://ftp.support.compaq.com/public/unix/

Feladó: 2002. február 16., szombat, 22:21[Törlés][Szerkesztés]

Forrástelepítéseknél ezek az utasítások a könyvtárszerkezetre vonatkoznak, feltételezve, hogy az "usr/local"-t használták (alapértelmezett) a configure-val. De az előző oldal utasításai (összeállításhoz/telepítéshez) a következőket javasolják:

./configure --prefix=/usr/local/mysql

A következetesség érdekében (és ez okoz némi gondot a Perl-lel, tehát nem pusztán szemantikai), az ezen az oldalon található utasításoknak azt kell feltételezniük, hogy a /usr/local/mysql a configure telepítési könyvtára.

Írta: Linda Wright, 2002. február 16., szombat, 22:21[Törlés][Szerkesztés]

Talán ez a legfontosabb és legkevésbé
értékelt részei az összes mySQL-nek
dokumentáció az első mySQL-felhasználók számára. IMHO
együtt olvasva ezt az oldalt
A http://www.mysql.com/doc/P/r/Privileges.html egy
kötelező mindenkinek, aki biztonságos adatbázisrendszert tervez
bármilyen igazi kifinomultság.

Christopher Raymond, 2002. február 16., szombat, 22:21[Törlés][Szerkesztés]

Megpróbálom telepíteni a MySQL-t OS X Public Beta alatt. Amikor futtatom a mysql_install_db szkriptet, hibaüzenetet kapok:

Dyld: A ./bin/mysqld nem tudja megnyitni a könyvtárat: /usr/lib/libpthread.A.dylib (Nincs ilyen fájl vagy könyvtár, errno = 2)
A támogatási táblák telepítése nem sikerült!

Feltételezem, hogy a szkript olyan könyvtárat keres, ami nem létezik, mert az Apple-nek egy kicsit más a címtár-elnevezési struktúrája, talán ezt a szkriptet módosítani kell az OS X disztribúcióhoz.

Tud valaki segíteni?

Írta: Mark Zieg, 2002. február 16., szombat, 22:21[Törlés][Szerkesztés]

Jó lenne, ha lenne lehetőség a kapcsolatok naplózására, de nem a lekérdezésekre.

Bejegyezte: Bennett Haselton, 2002. február 16., szombat, 22:21[Törlés][Szerkesztés]

Ha mysql root felhasználóként jelentkezett be, és nincs kiválasztva aktuális adatbázis, és megpróbálja
adjon meg minden jogosultságot egy felhasználónak a következő paranccsal:

ADJA MEG MINDEN KIVÁLTSÁGOT *Bhaseltónak

Ekkor az ÚJRATÖLTÉS, LEÁLLÍTÁS, FELDOLGOZÁS, FÁJL és ENGEDÉLYEZÉS nem kerül megadásra, ahogyan az lehetséges.
a "mysql" adatbázis "user" táblájának ellenőrzésével ellenőrizhető. (Ez feltehetően tervezésből adódik,
mivel ezek a jogosultságok "túl erőssé" tehetik a felhasználót.)

Írta: DC Hill, 2002. február 16., szombat, 22:21[Törlés][Szerkesztés]

MEGJEGYZÉS: Ha jogosultságokat adott egy felhasználónak egy adott adatbázisban, vagy ennél alacsonyabb szinten, akkor a "REVOKE ALL ON *.* FROM ;" parancsot hívja meg. NEM vonja vissza a jogosultságokat ezeken a szinteken. A fenti utasításban szereplő *.* jelentése „globális”, nem „minden (egyedi) tábla az összes (egyedi) adatbázison. Ez az utasítás CSAK a mysql.user táblában tárolt globális jogosultságokat vonja vissza. Minden konkrétabbat visszavonnia KELL privilégiumokat ugyanúgy kaptak, ha azt szeretné, hogy eltávolítsák őket a privilege way táblákból. (azaz - GRANT ALL ON foo.* TO ; => REVOKE ALL ON foo.* FROM ;) Remélem ezzel megment néhányat egy kis idő és csalódás.

Írta: Cris Perdue, 2002. február 16., szombat, 22:21[Törlés][Szerkesztés]

"Ha megvan a folyamatjog, láthatod
minden szál.
Ellenkező esetben csak a saját szálait láthatja."

Írta: FreeBSD Forums, 2002. február 16. szombat, 22:21[Törlés][Szerkesztés]

A phpMyAdmin web alapú eszközzel sokat tehet
a mySQL adminisztrátori függvényei közül. href="http://www.freebsdforums.org"
>FreeBSD fórumok

Feladó: 2002. február 25., hétfő, 06:03[Törlés][Szerkesztés]

MySQL 3.23.36-on ellenőrizve Red Hat Linux 7.1-en:
Vegye figyelembe, hogy ha gépel
használd a_c;
grant select on * to ;
hozzáférést adsz bármelyikhez
"a_c"-nek megfelelő adatbázis, ahol az aláhúzás a
wild card. (Gondolom, ritkán van probléma.)
Javítsa ki a
update mysql.db set db="a\_c" ahol db="a_c";

Feladó: jan behrens, 2002. július 9., kedd, 01:31[Törlés][Szerkesztés]

a fent említett hiba a DAN ELIN-től az x.x.41-ben
látszólag továbbra is érvényes x.x.51-ben, nem tudok bejelentkezni a
adatbázis után jogosultságok GRANTING és adott a
jelszó egy új felhasználónak (igen, kipirultam
jogosultságok)..................csak root hozzáférés lehetséges

Írta: Dan Egli, 2002. április 4., csütörtök, 20:33[Törlés][Szerkesztés]

Úgy tűnik, hogy hiba van a Grant 3.23.41-ben.
Csak a root férhet hozzá a mysql adatbázishoz, még akkor is
miután Grant-ot használta privák megadására bármire
adatbázis/tábla/oszlop/ect.. mindig megkapja
az engedély megtagadva, ettől függetlenül.

Írta: Lars Aronsson, 2002. június 8. szombat, 11:16["%". Amikor megpróbálom törölni őket, azt mondják egy bizonyos adatbázisnak, de nincsenek globális jogosultságok
CREATE TEMPORARY TABLE jogosultságot az adatbázisban
meg van tagadva.

Meg kell adnia a global CREATE __and__ global értéket
IDEIGLENES TÁBLÁZATOK LÉTREHOZÁSA a felhasználó számára. IOW:
GRANT LÉTREHOZÁS, IDEIGLENES TÁBLÁZATOK LÉTREHOZÁSA A *.*-N TO
;

Mondanom sem kell, hogy ez kecsesen érinti a biztonságot.

Feladó: 2002. augusztus 25., vasárnap, 09:17[Törlés][Szerkesztés]

Az ideiglenes fájlok nagyszerű ötlet, de még azzal is
Ideiglenes fájljogok létrehozása és létrehozása a
felhasználói (globális jogok) fájl, még mindig nem működik.
Úgy tűnik, ez rosszul van megtervezve.

Írta: Brad Bulger, 2002. szeptember 2-án, hétfőn, 4:09-kor[Törlés][Szerkesztés]

Megjegyzendő, hogy csak TÁMOGATÁSI LEHETŐSÉGVEL
lehetővé teszi a felhasználó számára, hogy jogosultságokat adjon át olyan felhasználóknak, akik
már létezik. A felhasználó automatikus létrehozása
rekordok nem érvényesek - hibaüzenetet kap
hogy a GRANT OPTION jogosultsággal rendelkező felhasználó megteszi
nem fér hozzá a "mysql" adatbázishoz. Ez
valószínűleg jó dolog, de dokumentálni kell.

Írta: Michael Babcock, 2002. november 8., péntek, 13:00[Törlés][Szerkesztés]

A MESTER ÁLLAPOT MEGJELENÍTÉSE PROCESS jogosultságot igényel.
A többi ilyen páratlan kombinációt dokumentálni kell.

Írta: Dee Kintaudi, 2002. november 21., csütörtök, 12:42[Törlés][Szerkesztés]

Oké, van egy kérdésem és egy problémám a MySQL-lel és
jelszavak :). Próbáltam több lehetőséget is használni
és legtöbbjük nem működött. Azonban egy
A megoldás működött, és kétszer teszteltem, és sikerült
szilárd volt. Természetesen elvesztettem a kis papírdarabot I
kiírtam és nem találom
Solotion bárhol, mintha nem is létezne, vagy talán én
elképzelte. A megoldás, ami nekem bevált
mielőtt elvesztettem volna a kis cédulát, amire felírtam
valahogy így megy..... Illessze be a user root-ba
Jelszó "az én jelszavam", majd valami
"Y", "Y", "Y" betűkkel (körülbelül egy tucat vagy 15-ször)
Ezt a megoldást azonban sehol sem találom
valaki segít nekem itt?

Szerintem nagyon jó lenne, ha ezt feltennék
ahelyett, hogy megpróbálnánk
rejtsd el. Szerintem ez sok problémát megoldana. Éppen
tedd be a jelszót = "Y", "Y", "Y", ez olyan, mintha szégyellnék
vagy valami.

Írta: AJIT DIXIT 2002. november 25-én, hétfőn, 6:56-kor[Törlés][Szerkesztés]

Amikor többtáblás frissítésen dolgozom root felhasználóval
jól működik

Ha nem root felhasználóval dolgozom, hibát kapok

Sql: frissítés Tőzsdekereskedők, területek beállítása a_nm = aname
ahol acd = terület