Luați în considerare, de exemplu, cum să creați conturi și privilegii pentru organizația imaginară widgets.example.com. Să presupunem că sunteți logat în instanța nou instalată a MySQL și ați eliminat toate conturile implicite folosind comanda DROP USER. Nu uitați să verificați tabelul mysql.user pentru a vă asigura că nu mai rămâne nimic în ea.
MySQL nu include roluri și grupuri cu care să fiți familiarizați cu alte DBMS-uri. MySQL suportă numai utilizatorii.
Toate lucrările se bazează pe aplicarea combinațiilor a trei comenzi principale:
GRANT [privilegii] ON pe [obiecte] PENTRU [utilizator]:
GRANT [privilegii] ON [obiecte] PENTRU [utilizator] IDENTIFICAT DE [parola]:
REVOKE [privilegii] ON pe [obiectele] din [utilizator];
Mai jos este o prezentare generală a diferitelor tipuri de conturi de care aveți nevoie, precum și a privilegiilor acestora.
mysql> GRANT ALL PRIVILEGES ON *. * TO 'root' @ 'localhost'
-> IDENTIFICAT DE "p4ssword" CU OPȚIUNI DE GRANT;
Conturi pentru administratorii de baze de date (DBA)
Dacă mai multe DBA-uri sunt accesate pe serverul MySQL, uneori este logic să creezi un cont pentru toată lumea, mai degrabă decât un cont comun pentru toată lumea. În același timp, contabilitatea și controlul sunt simplificate:
mysql> GRANT ALL PRIVILEGES ON *. * TO 'john' @ 'localhost'
-> IDENTIFICAT DE "p4ssword" CU OPȚIUNI DE GRANT;
mysql> GRANT INSERT, UPDATE PRIVILEGES pe widgets.orders -> TO 'tera'@'Z.widgets.example.com'
-> IDENTIFICAT DE "p4ssword";
Simulare de grup MySQL nu are grupuri și roluri, ca în multe alte DBMS-uri. Uneori este logic să creați un cont cu numele rolului aplicației sau rolul angajatului, de exemplu, analist sau custserv, dar în acest exemplu nu vom face acest lucru.
Accesați numai pentru logare Destul de des, MySQL este folosit pentru logarea diferitelor tipuri de date. Nu contează dacă este vorba despre înregistrarea tuturor solicitărilor Apache sau luarea în considerare a apelurilor la ușă, logarea este o aplicație care, cel mai probabil, are nevoie doar de scrierea de acces la aceeași bază de date sau tabel. Pentru a crea un cont de logare, aceasta este comanda:
mysql> GRANT INSERT pe jurnale. * TO 'logger'@'Z.widgets.example.com'
-> IDENTIFICAT DE "p4ssword";
Se adaugă o linie în tabelul utilizatorilor, dar deoarece nu am specificat privilegii globale (*. *), Toate coloanele legate de privilegii conțin în N. Singurul scop al acestui șir este să permită utilizatorului să se conecteze de pe orice computer și să introducă o parolă. Deoarece am specificat privilegiul asociat unei anumite baze de date, totul interesant a căzut în tabelul db, în care toate coloanele, cu excepția Insert_priv, conțin N, iar ultima - Y.
mysql> SELECTAREA GRANTULUI, TABELELE DE BLOCARE, FILE PORNIT *. * PENTRU 'backup' @ 'localhost'
-> IDENTIFICAT DE "p4ssword";
Pentru a asigura coerența rezultatelor multiple operațiuni de salvare de rezervă, trebuie să emiteți TABLURI FLUX cu
READ LOCK, care necesită și privilegiul RELOAD. Permite mai multe operații, în special LOGURI FLUX.
mysql> PROCESUL DE GRANT, ÎNCHEIAT pe *. *
-> TO 'noc'@'monitorserver.noc.widgets.example.com'
-> IDENTIFICAT DE "p4ssword";
Este posibil să aveți nevoie și de privilegiul SUPER, care vă va permite să executați comanda SHOW INNODB STATUS.