1. Sissejuhatus
MySQL on väga populaarne avatud lähtekoodiga andmebaasihaldussüsteem, mida kasutatakse paljudes veebirakendustes ja süsteemides. Andmebaasi kasutajate õiguste korrektne haldamine on äärmiselt oluline turvalisuse tagamiseks ja andmete tervikluse säilitamiseks. Selles artiklis selgitame üksikasjalikult MySQL-i käsu „GRANT” kasutamist, mis võimaldab kasutajatele õigusi määrata.
Kasutades käsku „GRANT”, saab konkreetsele kasutajale anda mitmesuguseid õigusi andmebaasi sees. Käesolevas artiklis käsitleme GRANT-käsu põhikasutust, praktilisi näiteid ja ka õiguste eemaldamise viise. See aitab tõhustada MySQL-i turvaseadeid ja haldusprotsesse.
2. Õiguste haldamise tähtsus MySQL-is
Õiguste haldamise eesmärk
Õiguste haldamine mängib keskset rolli MySQL-i turvalisuse tugevdamisel. Kui anda kõikidele kasutajatele piiramatud õigused, tekib oht, et andmeid muudetakse või kustutatakse pahatahtlikult. Seetõttu tuleb lähtuda „vähimate õiguste põhimõttest” (Principle of Least Privilege) ning anda igale kasutajale ainult tema tööks vajalikud minimaalsed õigused.
Õiguste tasemed
MySQL-is saab õigusi hallata erinevatel tasemetel. Levinumad on järgmised:
- Globaalsed õigused: kehtivad kogu MySQL-serveris. Kasutaja pääseb ligi kõikidele andmebaasidele, tabelitele ja veergudele.
- Andmebaasi õigused: kehtivad ainult kindlas andmebaasis ning võimaldavad hallata mitut tabelit selles andmebaasis.
- Tabeli õigused: kehtivad konkreetse andmebaasi kindlate tabelite kohta.
- Veeru õigused: kehtivad ainult konkreetse tabeli valitud veergudele. Seda kasutatakse tihti näiteks isikuandmete kaitsmiseks.
Õiguste määramine sobival tasemel aitab parandada turvalisust ja suurendada haldustõhusust.

3. GRANT käsu põhiline kasutamine
GRANT käsu põhistruktuur
GRANT käsk on mõeldud MySQL-i kasutajatele õiguste andmiseks. Põhistruktuur on järgmine:
GRANT õiguse_nimi ON andmebaas_nimi.tabel_nimi TO 'kasutajanimi'@'hostinimi';
Näiteks, kui soovite anda SELECT
õiguse kindlale kasutajale, siis käsk näeb välja selline:
GRANT SELECT ON mydb.* TO 'user'@'localhost';
Selle käsu tulemusena saab määratud kasutaja sooritada SELECT
päringuid kõigi mydb
andmebaasi tabelite peal. localhost
viitab hostinimele, mis tähendab, et kasutaja saab ligi ainult kohalikust masinast.
Õiguste tüübid
MySQL-is on saadaval mitmesugused õigused. Olulisemad on järgmised:
- SELECT: lubab andmete lugemist (päringuid).
- INSERT: lubab uute andmete lisamist.
- UPDATE: lubab olemasolevate andmete muutmist.
- DELETE: lubab andmete kustutamist.
- ALL: annab kõik õigused (ei ole üldiselt soovitatav).
Oluline on määrata igale kasutajale õigused vastavalt tema töövajadustele, vältides liigseid ligipääse.
4. Praktilised õiguste seadmise stsenaariumid
Erinevate õigustega mitme kasutaja haldamine
Süsteemides võib olla vaja anda erinevatele kasutajatele erinevad õigused. Näiteks:
- Andmebaasi administraator (DBA):
Kasutaja, kellel on kõik õigused kogu andmebaasi ulatuses. Sellisele kasutajale määratakse näiteksALL PRIVILEGES
.
GRANT ALL PRIVILEGES ON mydb.* TO 'admin'@'localhost';
- Arendaja:
Kasutaja, kellel on lugemis- ja kirjutamisõigused tabelitele, kuid mitte täielikku haldusõigust.
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'developer'@'localhost';
- Ärianalüütik:
Kasutaja, kellel on ainultSELECT
õigus, et teha päringuid ja koostada aruandeid.
GRANT SELECT ON mydb.* TO 'analyst'@'localhost';
Nii saab õiguste diferentseerimise abil tugevdada turvalisust ja parandada tööprotsesside efektiivsust.

5. Õiguste kontrollimine SHOW GRANTS käsuga
Kuidas õigusi kontrollida
Kasutades käsku SHOW GRANTS
, on võimalik kontrollida, millised õigused on antud kindlale kasutajale.
SHOW GRANTS FOR 'user'@'localhost';
Selle käsu tulemusena kuvatakse kõik õigused, mis on sellele kasutajale määratud. Näiteks:
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'user'@'localhost';
See võimaldab administraatoril kiiresti üle vaadata kasutajate õigused ja vajadusel neid muuta.
Tõrkeotsing
Kui õigustega seotud probleemid tekivad, tuleks esmalt kontrollida SHOW GRANTS
käsuga, kas kasutajal on vajalikud õigused olemas. Näiteks, kui kasutaja ei saa ligi kindlale tabelile, tuleb veenduda, et talle on antud vastavad õigused, ning vajadusel neid täiendada või muuta.
6. Õiguste eemaldamine REVOKE käsuga
REVOKE käsu põhistruktuur
GRANT
käsuga antud õigusi saab eemaldada käsu REVOKE
abil. Põhistruktuur on järgmine:
REVOKE õiguse_nimi ON andmebaas_nimi.tabel_nimi FROM 'kasutajanimi'@'hostinimi';
Näiteks, kui soovite eemaldada kasutajalt SELECT
õiguse, siis käsk näeb välja selline:
REVOKE SELECT ON mydb.* FROM 'user'@'localhost';
Selle käsu tulemusel ei saa määratud kasutaja enam SELECT
päringuid teha ühegi mydb
andmebaasi tabeli peal.
Korraga mitme õiguse eemaldamine
Samuti saab eemaldada mitu õigust korraga. Näiteks INSERT
ja UPDATE
õiguste eemaldamiseks:
REVOKE INSERT, UPDATE ON mydb.* FROM 'user'@'localhost';
Sellisel juhul kaotab kasutaja user
õiguse lisada ja muuta andmeid mydb
andmebaasis.
Levinumad probleemid ja lahendused
REVOKE
käsku kasutades tuleb arvestada, et kui kasutajal on veel teisi õigusi, siis need jäävad kehtima. Näiteks, kui eemaldatakse ainult osa õigustest, jäävad teised endiselt alles. Seetõttu tuleb alati üle vaadata kõik õigused ja vajadusel eemaldada ka mittevajalikud.

7. Parimad tavad turvalisuse tugevdamiseks
Vähimate õiguste põhimõte (Principle of Least Privilege)
MySQL-i õiguste seadistamisel on kõige olulisem järgida „vähimate õiguste põhimõtet”. See tähendab, et igale kasutajale antakse ainult need õigused, mis on tööülesannete täitmiseks hädavajalikud. Näiteks arendajale võib anda õiguse andmeid sisestada ja uuendada, kuid mitte õigust kogu andmebaasi kustutada.
GRANT SELECT, INSERT ON mydb.* TO 'developer'@'localhost';
Õiguste regulaarne ülevaatus
Turvalisuse seisukohalt on oluline õigusi regulaarselt üle vaadata. Näiteks tuleks kohe eemaldada õigused töötajatelt, kes on ettevõttest lahkunud, või alltöövõtjatelt, kelle projekt on lõppenud. Selleks saab kasutada käsku SHOW GRANTS
, et kontrollida kasutajatele antud õigusi.
SHOW GRANTS FOR 'user'@'localhost';
Nii saab üle vaadata, millistele andmebaasidele on kasutajal õigused, ning vajadusel neid eemaldada käsuga REVOKE
.
Ligipääsu piiramine hostinime järgi
Turvalisust saab suurendada ka piirates kasutajate ligipääsu hostinime järgi. Näiteks, kui soovite, et kasutaja pääseks andmebaasi ligi ainult kohalikust masinast, siis määrake hostinimeks localhost
.
GRANT SELECT ON mydb.* TO 'user'@'localhost';
Samuti on võimalik määrata konkreetne IP-aadress, et lubada ligipääsu ainult kindlast võrgust.
GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'192.168.1.100';
8. Kokkuvõte
Selles artiklis selgitasime üksikasjalikult, kuidas seadistada MySQL-i kasutajaõigusi GRANT käsu abil. GRANT käsu korrektne kasutamine võimaldab määrata kasutajatele sobivaid õigusi ja tagada andmebaasi turvalisus. Lisaks saab õiguste kontrollimiseks ja eemaldamiseks kasutada SHOW GRANTS ja REVOKE käske, mis aitavad hoida õiguste haldamise alati ajakohasena.
Turvalisuse tugevdamiseks on soovitatav järgida „vähimate õiguste põhimõtet” ning teha õiguste regulaarset ülevaatust. MySQL-i õiguste haldamine on andmebaasi turvalise ja tõhusa kasutamise keskne osa, seega on oluline neid põhimõtteid hästi mõista ja praktikas rakendada.