A legjobb orosz programozók által jóváhagyott
REVOKE priv_type [(oszlop_lista)] [, priv_type [(oszlop_lista)]. ] ON FROM user_name [, user_name]. ]
A GRANT a 3.22.11-es vagy újabb verzió ó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, valamint jogokat adjanak a felhasználóknak vagy megtagadják jogaikat négy privilegiumnál:
Globális szint A globális jogosultságok a megadott kiszolgáló összes adatbázisára érvényesek. Ezeket a jogosultságokat a mysql.user tábla tárolja. Adatbázisszint Az adatbázis jogosultságok a megadott adatbázis összes táblájára vonatkoznak. Ezek a jogosultságok a mysql.db és a mysql.host táblákban tárolódnak. Táblázatszint A táblázati jogosultságok a megadott táblázat összes oszlopára vonatkoznak. Ezek a jogosultságok a mysql.tables_priv táblában vannak tárolva. Oszlopszintű Oszlop-jogosultságok a megadott táblázat egyes oszlopaira vonatkoznak. Ezeket a jogosultságokat a mysql.columns_priv táblában tárolja.
A táblázat felsorolja a GRANT és REVOKE utasítások priv_type paraméterének lehetséges értékeit.
Minden egyszerű jogosultságot állít be, kivéve a GRANT OPTION opciót
A "nincs jogosultság" szinonimája.
Beállíthatja a USAGE értéket, ha jogosultságot kíván létrehozni a felhasználó nélkül.
KÉSZÜLT IDEIGLENES TÁBLÁZATOK előjogai. Hajtani. LOCK TÁBLÁZATOK. REPLICATION. A MUTASSA A DATABÁZATOK ÉS a SUPER újak a 4.0.2-es verzióhoz. Ha az új jogosultságokat a 4.0.2-es verzióra való frissítés után szeretné használni, akkor futtatnia kell a mysql_fix_privilege_tables szkriptet.
A MySQL régebbi verzióiban a PROCESS jogosultság ugyanazokat a jogokat biztosítja, mint az új SUPER jogosultság.
A felhasználó megtagadja a GRANT parancs által biztosított jogosultságokat. használja a GRANT OPTION priv_type értékét.
Az asztalhoz csak az alábbi priv_type értékeket adhatja meg. SELECT. INSERT. UPDATE. DELETE. CREATE. DROP. GRANT. I NDEX és ALTER.
Egy oszlopban csak az alábbi priv_type értékeket adhatja meg (az oszloplista operátor használatakor): SELECT. INSERT és UPDATE.
A globális jogosultságok az ON *. * Szintaxis alapján adhatók meg. és adatbázis-jogosultságok - az ON db_name. * szintaxis használatával. Ha az aktuális adatbázis nyitott állapotában az ON * beállítást választja, jogosultságok lesznek beállítva az adatbázis számára. (Figyelmeztetés: ha nyitott adatbázis hiányában megadja az ON * -ot, ez hatással lesz a globális jogosultságokra!)
Annak érdekében, hogy meg tudja határozni az egyes számítógépek felhasználói számára biztosított jogokat, a MySQL képes megadni a felhasználónevet (user_name) az user @ host formában. Ha meg szeretné adni a karakterláncot. amely speciális karaktereket (például `- ') vagy a gazdagépet tartalmaz. amely különleges vagy helyettesítő karaktereket (mint a `% '), arra lehet következtetni, nevét a távoli számítógép vagy a felhasználó idézőjelbe (például teszt-felhasználó„@”test-hostname).
A távoli számítógép nevében karakterkészleteket is megadhat. Például a felhasználó @ "% Loc.gov" a loc.gov domain összes távoli számítógépe felhasználójára utal. és a felhasználó "144.155.166.%" a 144.155.166 C osztályú összes alhálózati számítógép felhasználójára utal.
A felhasználó egyszerű formája a felhasználó @ "%" szinonimája.
A MySQL nem támogatja a helyettesítő karaktereket a felhasználónevekben. A névtelen felhasználókat úgy definiáljuk, hogy a User = '' rekordokat beillesztjük a mysql.user táblába, vagy létrehozunk egy üres nevet a GRANT parancs segítségével.
Megjegyzés. Ha névtelen felhasználók csatlakozhatnak a MySQL kiszolgálóhoz, akkor minden helyi felhasználónak jogosultságot kell adnia, mint felhasználó @ localhost. mert ellenkező esetben, amikor megpróbál a mysql.user táblában a helyi számítógépen lévő MySQL-be bejelentkezni, a névtelen felhasználó bevitele kerül felhasználásra!
Annak ellenőrzéséhez, hogy valami ilyesmi történik a számítógépen, futtassa a következő lekérdezést:
Jelenleg a GRANT parancs támogatja a legfeljebb 60 karakter hosszú távoli számítógépek, táblázatok, adatbázisok és oszlopok nevét. A felhasználónév nem haladhatja meg a 16 karaktert.
A táblázat vagy oszlop kiváltságai a logikai VAGY operátor használatával jönnek létre a négy szint kiváltságaiból. Például, ha a mysql.user táblázat azt jelzi, hogy a felhasználó globális SELECT jogosultsággal rendelkezik. Ez a jogosultság nem törlődik az adatbázisban, táblázatban vagy oszlopszintben.
Az oszlophoz tartozó jogosultságok az alábbiak szerint számíthatók:
A legtöbb esetben a felhasználói jogok csak egy privilegi szinten definiáltak, ezért ez az eljárás általában nem olyan összetett, mint a fentiekben leírtak. A kiváltságellenőrzési műveletek sorrendjéről részletes információkat a 4.2 Általános biztonsági kérdések és a MySQL Access Privilege rendszerben talál.
Ha a jogosultságokat a felhasználó / távoli számítógép kombinációja biztosítja, amely nem szerepel a mysql.user táblában. akkor az utolsó bejegyzéshez hozzáad egy bejegyzést, amely a táblázatban marad, amíg a DELETE parancs törlődik. Más szavakkal, a GRANT parancs felhasználói rekordokat hozhat létre a táblában, de a REVOKE parancs nem tudja törölni őket. Ehhez a DELETE parancsot kell elvégezni.
Ha egy új felhasználó létre van hozva a 3.22.12 és újabb verziókban, vagy globális jogosultságokkal rendelkezik, a felhasználó jelszavát az IDENTIFIED BY operátor fogja hozzárendelni. ha meg van adva. Ha a felhasználó már rendelkezik jelszóval, akkor ezt a jelszót egy újabb helyettesíti.
Ha nem szeretné elküldeni a jelszó egyértelmű szöveget, akkor használja a jelszó paraméter titkosított jelszó felhasználásával kapott SQL PASSWORD () függvény vagy a C API make_scrambled_password (char * a, const char * jelszó).
Figyelmeztetés. ha egy új felhasználó létrehozásakor nem ad meg IDENTIFIED BY utasítást. a felhasználó jelszó nélkül hozható létre. A biztonság szempontjából megbízhatatlan.
A jelszavak a SET PASSWORD paranccsal is beállíthatók. Lásd 5.5.6 Szintaxis a SET parancshoz.
Ha van adatbázis-jogosultsága, szükség esetén létrehoz egy bejegyzést a mysql.db táblában. Ez a bejegyzés törlődik, miután a REVOKE parancs törölte az adatbázis összes jogosultságát.
Ha a felhasználónak nincs jogosultsága az asztalhoz, a táblázat nem jelenik meg, amikor a felhasználó kéri a táblázatok listáját (például a SHOW TABLES operátor használatával).
A WITH GRANT OPTION operátor lehetővé teszi a felhasználó számára, hogy más felhasználók számára olyan jogosultságokat biztosítson, amelyeket ő maga rendelkezik a megadott jogosultság szintjén. A GRANT jogosultság megadásakor óvatosnak kell lennie, mivel két különböző jogosultsággal rendelkező felhasználó egyesíti a kiváltságokat!
Paraméterek MAX_QUERIES_PER_HOUR #. MAX_UPDATES_PER_HOUR # és MAX_CONNECTIONS_PER_HOUR # újak a MySQL 4.0.2-es verziójában. Ezek a paraméterek korlátozzák a felhasználók által egy órán belül végrehajtott kéréseket, frissítéseket és bejelentkezéseket. Ha 0-ra van állítva (alapértelmezett), ez azt jelenti, hogy a felhasználó számára nincsenek korlátozások. Lásd: 4.3.6 A felhasználói források korlátozása.
Nem adhat másik felhasználót olyan jogosultságnak, amelyet Ön nem tulajdonít. A GRANT jogosultsága lehetővé teszi, hogy csak azokat a jogosultságokat adja meg, amelyekre Ön rendelkezik.
Megjegyezzük, hogy ha a felhasználó rendelkezik a GRANT kiváltság egy adott privilégium szinten jogosultsággal a felhasználó már rendelkezik (vagy ami kap a jövőben!) Ezen a szinten is grantable a felhasználó. Tegyük fel, hogy a felhasználó az INSERT jogosultsággal rendelkezik az adatbázisban. Ha ezután hozzárendel egy SELECT jogosultságot az adatbázishoz, és megadja a GRANT OPTION opciót. a felhasználó nem csak a SELECT jogosultságot rendelheti hozzá. hanem INSERT is. Ha ezután megadja a felhasználónak az UPDATE jogosultságot az adatbázisban. a felhasználó az INSERT nevet rendelheti hozzá. SELECT és UPDATE.
Nem szabad hozzárendelni az ALTER jogosultságokat a hétköznapi felhasználókhoz. Ez lehetővé teszi a felhasználó számára, hogy elpusztítsa a jogosultsági rendszert az asztalok átnevezésével!
Ne feledje, hogy ha egy felhasználónál egy táblázatban vagy oszlopban kiváltságokat használsz, akkor a kiszolgáló minden felhasználó számára ellenőrzi a táblák és oszlopok jogosultságait, ami némileg lassítja a MySQL-t.
Amikor a mysqld elindul, minden kiváltság a memóriába kerül. Az adatbázis, a táblázat és az oszlop jogosultságai azonnal hatályba lépnek, és a felhasználói szintű jogosultságok a felhasználó legközelebbi csatlakozásakor lépnek érvénybe. A GRANT és REVOKE parancsokkal végrehajtott kiváltságos hozzárendelési táblák módosításai. a szerver azonnal feldolgozza. Ha módosítja a támogatási táblázat manuálisan (INSERT paranccsal. Az UPDATE stb), meg kell futtatni FLUSH KIVÁLTSÁGOK nyilatkozat vagy MySQLadmin süllyesztett kiváltság s, hogy elmondja, hogy a szerver újra a támogatási táblázat. Lásd a 4.3.3 fejezetet, amikor a jogosultságok módosításai hatályba lépnek.
Az ANSI SQL és a MySQL verziók GRANT parancsának legfontosabb különbségei a következők:
- A MySQL-ben a jogosultságok egy felhasználónév + egy távoli számítógép és nem csak egy felhasználónév kombinációjának felelnek meg.
- Az ANSI SQL nem rendelkezik globális jogosultságokkal és adatbázis-szintű jogosultságokkal, és az ANSI SQL nem támogatja az összes MySQL-jogosultságot. A MySQL viszont nem támogatja az ANSI SQL TRIGGER kiváltságait. VÉGREHAJTÁS vagy UNDER.
- Az ANSI SQL jogosultságok struktúrája hierarchikus. Ha töröl egy felhasználót, akkor a felhasználóhoz rendelt összes jogosultság törlődik. A MySQL-ben a hozzárendelt jogosultságokat nem törlik automatikusan, szükség esetén törölni kell őket.
- A MySQL-ben a felhasználó INSERT kimutatást alkalmazhat az asztalra, ha a táblázatban csak néhány oszlopban rendelkezik INSERT jogosultsággal. Olyan oszlopok, amelyeknél az INSERT jogosultság nem áll rendelkezésre. az alapértelmezett értékekre lesz beállítva. Az ANSI SQL minden oszlophoz INSERT jogosultságot igényel.
- Amikor töröl egy táblát az ANSI SQL-ben, az adott táblához tartozó összes jogosultság törlődik. Ha megszünteti a kiváltságokat az ANSI SQL-ben, akkor a jogosultságon alapuló valamennyi jogosultság is törlődik. A MySQL-ben a jogosultságok csak a REVOKE parancs segítségével törölhetők, vagy a MySQL jogosultsági hozzárendelési táblák megváltoztatásával.
A REQUIRE használatának leírása. lásd: 4.3.9. szakasz Biztonságos kapcsolatok használata.
MySQL.RU. A legjobb orosz programozók által jóváhagyott