Documente Academic
Documente Profesional
Documente Cultură
← Administrarea utilizatorilor
← Controlul accesului
← Comezile GRANT si REVOKE
← Backup-ul bazelor de date
← Securitatea datelor
← Optimizarea MySQL
Administrarea utilizatorilor
Tabelele de grant
Drepturile utilizatorilor MySQL sunt stocate in cateva tabele care sunt create automat la
instalarea MySQL. Aceste tabele apartin bazei de date mysql:
Fiecare dintre aceste tabele corespunde controlului unui nivel de acces. Poti crea un oricati
utilizatori care pot accesa MySQL de pe diferite gazde. Pentru fiecare combinatie
utilizator/gazda, acorzi acces la o intreaga baza de data, la anumite tabele, sau la anumite coloane
dintr-o tabele. Aditional, aceste tabele acorda privilegii de administrare. Utilizatorilor le poate fi
dat dreptul de a adauga/sterge baze de date sau de a acorda altor utilizatori drepturi de
administare.
In practica, nu ar trebui sa acorzi mai multe drepturi decat e necesar pentru a proteja datele
de curiosi sau de incompetenti. Pentru asta trebuie sa stii ca drepturile sunt acordate intr-un
mod ierarhic. Cele acordate pe tabela user sunt universale: daca un utilizator are privilegiu de
stergere(drop) in tabela user, acesta poate sterge orice tabela din rocie baza de date din MySQL.
Tabela db acorda privilegii asupra unei intregi baze de date. Pentru o tabela/set de tabele
foloseste tables_priv. Tabela columns_priv acorda drepturi asupra unor anumite colobne
dintr-o tabela.
Tabela user
Orice utilizator care vrea sa lucreze in MySQL trebuie sa fie inscris in acesta tabela.
Drepturile pot fi acordate in alta parte, dar fara o inscriere aici, utilizatorului nu i se va permite
conectarea la server.
MySQL identifica un utilizator dupa combinatia user-host. Prin urmare, un utilizator poate
avea cate un set de drepturi diferite pentru fiecare gazda (host) pe care o foloseste pentru a se
conecta la MySQL. Drepturile setate pe Y (yes) sunt acodate pentru toate tabele din orice baza
de date. Alte drepturi:
- File_priv acorda dreptul de a scrie si citi fisiere de pe disc.
- process_priv acorda dreptul de a vedea si de a termina toate comenzile si threrad-rile in
curs de executie(poti vedea ce fac si ce tasteaza ceilalti utilizatori !!).
- Grant_priv da dreptul de a putea acorda mai departe privilegiile proprii altor utilizatori.
- Reload_priv e folosit, in special pentru a face comenzi flush
- Shutdown_priv da dreptul de a opri server-ul folosind mysqladmin shutdown.
Tabela db
Drepturile specificate aici merg doar pentru baza de date specificate in coloana db_column.
Ofera drepturi asupra unei tabele sau asupra unor coloane dintr-o tabela.
MySQL foloseste tabelele de privilegii pentru a determina ce are si ce nu are un utilizator dreptul
sa faca in doi pasi:
1. Verificarea conexiunii: MySQL verifica daca ai voie sa te conectezi la server bazandu-se
pe numele de utilizator (blank insemna orice utilizator), numele de gazda si pe parola.
Pentru numele gazdei poti folosi caracterul wildcard '%' ca semnificand orice gazda.
2. Verificarea cererii: MySQL verifica in toate tabele de drepturi daca ai drepturile necesare
pentru a obtine informatiile dorite.
Tabele descrise mai sus sunt tabele normale MySQl si pot fi modificate cu comenzile invatate.
De exemplu, pentru a crea un nou utilizator:
Nu este insa ce si-ar dori sa fac administratorul de fiecare data. Din fericire, MySQL ofera cateva
comenzi care fac lucrul cu utilizatorii mult mai usor:
GRANT
Prima parte a comenzii poate fi all sau alta optiune din tabela user.
Partea a doua a comenzii (on guestbook) arata unde se vor aplica drepturile (vezi tabelul de mai
sus).
Partea a treia arata cui i se acorda drepturile (utilizator@gazda), iar ultima parte arata parola cu
care este identificat utilizatorul.
Acesta comanda permite lui adi sa vada, sa modifice, sa actualizeze si sa insereze inregistrari in
tabela 'guestbook' din baza de date 'guestbook2k'.
Marius are drepturi depline (poate chiar acorda privilegii altor utilizatori).
REVOKE
Daca vrei sa anulezi drepturile acordate unui utilizator poti folosi comanda REVOKE:
Afisarea drepturilor
Din versiunea 3.23.4 MySQL a introdus comanda show grants care permite vizualizarea
drepturilor acordate la un moment dat:
Reincarcarea drepturilor
MySQL citeste automat tabelele de privilegii cand e pornit si cand sunt date comenzi GRANT
sau REVOKE. Modificarile facute manual tabelelor de drepturi nu iau efect decat daca se
restarteaza MySQL. Ca sa functioneze aceste modificari reincarca tabelele:
flush privileges
sau
mysqladmin flush-privileges
sau
mysqladmin reload
Poti, de asemenea copia toate fisierele tabelelor (`*.frm', `*.MYD', and `*.MYI' files) cat
timp serverul nu actualizeaza nimic. Poti face si backup-uri selective cu SELECT * INTO
OUTFILE 'nume_fisier' FROM nume_tabela si sa restaurezi datele cu LOAD DATA INFILE
'nume_fisier' REPLACE ... Pentru a evita inregistrarile duplicat (inregistrarile noi le inlociesc pe
cele mai vechi daca sunt identice in cazul comenzii REPLACE) ai nevoie de o cheie primara sau
de o cheie unica.
Securitatea in MySQL
Securitatea e foarte importanta, in special cand vei conecta baza ta de date MySQL la
site-ul Web. Cand rulezi MySQL ia in considerare urmatoarele sfaturi:
Optimizarea MySQL
- Optimizeaza tabele care pot deveni fragmentate dupa multe actualizari si modificari
cu
OPTIMIZE TABLE nume_tabela
- Alege cel mai potrivit si cel mai scurt tip de date pentru campurile din tabele.
- Foloseste indecsi cand sunt necesari pentru a face interogarile mai rapide.
- Foloseste valori implicite in comanda INSERT
- Invata sa folosesti comanda EXPLAIN SELECT.. care arata ce se va intampla in
cazul unei interogari.
- Nu uita ca privilegiile sunt citite la fiecare interogare. Deci, simplifica cat mai mult
privilegiile acordate.
- Nu uita ca exista mai multe tipuri de tabele care pot fi create cu CREATE TABLE nume
TYPE=tip (MyISAM-implicit, HEAP-temporar, BDB-sigure pentru tranzactii).