Video: MySQL: Understanding Security 2024
Când MySQL este instalat, acesta creează automat o bază de date numită mysql . Toate informațiile utilizate pentru a vă proteja datele sunt stocate în această bază de date, inclusiv nume de cont, nume de gazde, parole și privilegii.
Privilegiile sunt stocate în coloane. Formatul fiecărui nume al coloanei este privilegiul _priv, în care privilegiul este un privilegiu de cont specific. De exemplu, coloana care conține privilegiile ALTER este numită alter_priv. Valoarea din fiecare coloană de privilegii este Y sau N, adică da sau nu.
De exemplu, în tabelul de utilizatori, ar exista un rând pentru un cont și o coloană pentru alter_priv. Dacă câmpul contului pentru alter_priv conține Y, contul poate fi utilizat pentru a executa o instrucțiune ALTER. Dacă alter_priv conține N, contul nu are privilegiul de a executa o instrucțiune ALTER.
Baza de date mysql conține următoarele tabele care stochează privilegii:
-
user table: Acest tabel stochează privilegiile care se aplică tuturor bazelor de date și tabelelor. Acesta conține un rând pentru fiecare cont valabil care include numele de utilizator, numele gazdei și parola. Serverul MySQL respinge o conexiune pentru un cont care nu există în acest tabel.
-
db tabel: Acest tabel stochează privilegiile care se aplică unei anumite baze de date. Acesta conține un rând pentru baza de date, care oferă privilegii unui nume de cont și unui nume de gazdă. Contul trebuie să existe în tabelul de utilizatori pentru privilegiile care trebuie acordate. Privilegiile care sunt date în tabelul de utilizatori privilegiază în acest tabel.
De exemplu, dacă tabela de utilizatori are un rând pentru proiectantul contului care acordă privilegii INSERT, proiectantul poate introduce în toate bazele de date. Dacă un rând din tabelul db arată N pentru INSERT pentru contul de designer din baza de date PetCatalog, tabelul de utilizatori îl ignoră și designerul îl poate insera în baza de date PetCatalog.
-
gazdă tabel: Acest tabel controlează accesul la o bază de date, în funcție de gazdă. Tabela gazdă funcționează cu tabelul db. Dacă un rând din tabela db are un câmp gol pentru gazdă, MySQL verifică tabela gazdă pentru a vedea dacă db are un rând acolo. În acest fel, puteți permite accesul la un db de la unele gazde, dar nu de la alții.
De exemplu, să presupunem că aveți două baze de date: db1 și db2. Baza de date db1 are informații sensibile, așa că doriți doar anumite persoane să o vadă. Baza de date db2 are informații pe care doriți să le vadă toată lumea. Dacă aveți un rând în tabelul db pentru db1 cu un câmp gazdă gol, puteți avea două rânduri pentru db1 în tabela gazdă.
Un rând poate oferi tuturor utilizatorilor privilegii de conectare de la o anumită gazdă, în timp ce un alt rând poate refuza privilegii utilizatorilor care se conectează de la orice altă gazdă.
-
tables_priv table: Acest tabel stochează privilegiile care se aplică anumitor tabele.
-
columns_priv tabel: Acest tabel stochează privilegiile care se aplică anumitor coloane.
Puteți vedea și modifica tabelele în mysql direct dacă utilizați un cont care are privilegiile necesare. Puteți utiliza interogări SQL cum ar fi SELECT, INSERT și UPDATE. Dacă accesați MySQL prin intermediul angajatorului dvs., al unui client sau al unei companii de găzduire web, probabil că nu aveți un cont cu privilegiile necesare.