Distribuirea drepturilor de acces

Autentificarea utilizatorilor se realizează după nume (până la 16 caractere), parola (poate fi goală) și host sau IP-ul său. Majoritatea programelor client utilizează implicit un nume mysql care se potrivește cu numele unix, dar acest lucru poate fi schimbat cu comutatorul --user =. Parola poate fi setată:
  • chiar la linia de comandă după comutatorul -p (fără spațiu, este foarte periculos)
  • specificând comutatorul -p fără o parolă (programul va cere parola de la tastatură, cea mai sigură)
  • în fișierul .my.cnf (drepturile la acest fișier trebuie să fie numai de la proprietar), secțiunea [client], câmpurile gazdă, utilizatorul și parola
  • utilizând variabila de mediu MYSQL_PWD (foarte periculoasă) și MYSQL_HOST

Toate informațiile despre drepturi sunt stocate în baza de date cu numele mysql. Nimeni nu ar trebui să aibă acces la citire (vezi pro parole).







Verificați drepturile în îndeplinirea fiecărei cereri: tabel db este sortat pe câmpurile gazdă, Db și utilizator, tabelul de gazdă în câmpurile gazdă și Db, masă și columns_priv tables_priv domenii de gazdă, Db și utilizator de la cele mai specifice pentru cel mai puțin. numai tabelul de utilizator este verificat de anchete administrative și accesul la fișiere. Pentru alte anchete la începutul mesei este verificat de utilizator - și dacă în drepturile de acces ale utilizatorului la nivel „global“. Dacă există, operația este permisă. Dacă nu, verificați permisiunile la o bază de date specifică la o gazdă specifică (la intersecția Db și tabele gazdă bazate pe template-uri și câmpuri goale). Dacă sunt suficiente, accesul este dat. În cazul în care nu este suficient, să se unească drepturile „globale“ și a bazei de date / gazdă se adaugă la dreapta extrase din tabele și columns_priv tables_priv. Dacă acest lucru nu este suficient, atunci, din păcate.







Drepturile de acces sunt citite de mysqld (și nu pot fi citite prin "manual" schimbarea bazei de date MySQL):
  • la pornire
  • atunci când executați comenzile GRANT, REVOKE și SET PASSWORD
  • atunci când executați comanda FLUX PRIVILEGES
  • atunci când rulează mysqladmin flush-privilegii / reîncărcați

Opțiunile "globale" și schimbările de parole intră în vigoare numai la următoarea conexiune. Schimbări de acces la baza de date - cu următoarea comandă de utilizare. Schimbări de acces la tabele și coloane - la următoarea solicitare.

Schimbați parola: setați parola pentru nume = parola ("parola nouă").

GRANT privilegii de tip [(coloană-listă)] [, privilegii de tip [(list-coloană)]. ] ON <имя-таблицы | * | *.* | имя-БД.*> Pentru numele de utilizator [IDENTIFIED by 'password'] [, username [IDENTIFIED BY 'password]. ] CU OPȚIUNEA DE GRANT

REVOKE privilegii de tip [(lista de coloane)] [, privilegii de tip [(lista-coloane)]. ] ON <имя-таблицы | * | *.* | имя-БД.*> De la numele de utilizator [, numele de utilizator. ]

Tipuri de privilegii:
  • TOATE PRIVILEGIILE (aka ALL)
  • ALTER
  • CREEAZĂ
  • ȘTERGE
  • DROP
  • FILE
  • OPȚIUNEA GRANTULUI (numai pentru REVOKE)
  • INDEX
  • INSERT
  • PROCESUL
  • REFERINȚE (neimplementate)
  • REÎNCĂRCAȚI
  • SELECT
  • OPRIREA
  • UPDATE
  • UTILIZARE (nu - doar un loc de tras)

Pentru coloane, puteți seta INSERT, SELECT și UPDATE numai. Pentru tabele - INSERT, SELECT, UPDATE, CREATE, DROP, DELETE, GRANT, INDEX, ALTER. Utilizarea "*. *" Înseamnă stabilirea privilegiilor globale. Utilizarea "*" înseamnă setarea privilegiilor pentru baza de date curentă (dacă nu există o bază de date curentă, apoi una globală).

ARĂTAȚI GRANTURI PENTRU @ host name;

Dacă privilegiile la nivelul tabelelor și coloanelor sunt folosite pentru cel puțin un utilizator, atunci se fac verificări pentru toate solicitările tuturor utilizatorilor, ceea ce încetinește considerabil munca.







Articole similare

Trimiteți-le prietenilor: