Introducere

MySQL este un sistem de management al bazelor de date relaționale open-source. Este frecvent utilizat ca parte a stivei LAMP (care reprezintă Linux, Apache, MySQL și PHP) și, la momentul redactării acestui ghid, este cea mai populară bază de date open-source din lume.

Acest ghid descrie modul de creare a unui nou utilizator MySQL și de acordare a permisiunilor necesare pentru efectuarea unei varietăți de acțiuni.

Cerințe Prealabile

Pentru a putea urma acest ghid, vei avea nevoie de acces la o bază de date MySQL. Acest ghid presupune că baza de date este instalată pe un server virtual privat care rulează Ubuntu 20.04, deși principiile prezentate ar trebui să fie aplicabile indiferent de modul în care accesezi baza ta de date.

Dacă nu ai acces la o bază de date MySQL și dorești să instalezi una, poți urma unul din ghidurile noastre despre „Cum se instalează MySQL”. Indiferent de sistemul de operare de bază al serverului, metodele pentru crearea unui nou utilizator MySQL și acordarea permisiunilor vor fi, în general, aceleași.

Ca alternativă, poți configura o bază de date MySQL administrată de un furnizor de servicii cloud. Pentru detalii despre configurarea unei baze de date gestionate DDS, consultă documentația noastră de produs.

Te rugăm să reții că orice porțiuni din comenzile exemplu pe care trebuie să le modifici sau personalizezi vor fi evidențiate astfel pe parcursul acestui ghid.


Crearea unui Utilizator Nou

La instalare, MySQL creează un cont de utilizator root pe care îl poți folosi pentru a gestiona baza de date. Acest utilizator deține toate privilegiile asupra serverului MySQL, ceea ce înseamnă că are control complet asupra fiecărei baze de date, tabele, utilizatori etc. Din acest motiv, este recomandat să eviți utilizarea acestui cont în afara funcțiilor administrative. Acest pas descrie cum să folosești utilizatorul root MySQL pentru a crea un cont nou de utilizator și a-i acorda privilegiile necesare.

În sistemele Ubuntu care rulează MySQL 5.7 (și versiuni ulterioare), utilizatorul root MySQL este configurat să se autentifice folosind pluginul auth_socket în mod implicit, și nu cu o parolă. Acest plugin solicită ca numele utilizatorului sistemului de operare care invocă clientul MySQL să corespundă cu numele utilizatorului MySQL specificat în comandă. Aceasta înseamnă că trebuie să precedeți comanda mysql cu sudo pentru a o executa cu privilegiile utilizatorului root Ubuntu și, astfel, pentru a obține accesul la utilizatorul root MySQL:

sudo mysql

Notă: Dacă utilizatorul tău root MySQL este configurat să se autentifice cu o parolă, va trebui să folosești o altă comandă pentru a accesa shell-ul MySQL. Comanda următoare va rula clientul MySQL cu privilegii de utilizator obișnuit, iar vei obține privilegii de administrator în baza de date doar după ce te autentifici cu parola corectă:

mysql -u root -p

Odată ce ai acces la promptul MySQL, poți crea un utilizator nou folosind o instrucțiune CREATE USER. Sintaxa generală este următoarea:

CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

După CREATE USER, specifici numele de utilizator. Acesta este urmat imediat de un semn @ și apoi de numele gazdei de pe care se va conecta acest utilizator. Dacă intenționezi să accesezi acest utilizator local de pe serverul Ubuntu, poți specifica localhost. Încadrarea atât a numelui de utilizator, cât și a gazdei între ghilimele simple nu este întotdeauna necesară, dar poate ajuta la prevenirea erorilor.

Ai mai multe opțiuni când vine vorba de alegerea pluginului de autentificare al utilizatorului. Pluginul auth_socket menționat anterior poate fi convenabil, deoarece oferă o securitate ridicată fără a necesita ca utilizatorii valizi să introducă o parolă pentru a accesa baza de date. Totuși, acesta împiedică și conexiunile de la distanță, ceea ce poate complica lucrurile atunci când programele externe trebuie să interacționeze cu MySQL.

Ca alternativă, poți omite partea WITH authentication_plugin din sintaxă pentru a face ca utilizatorul să se autentifice cu pluginul implicit MySQL, caching_sha2_password. Documentația MySQL recomandă acest plugin pentru utilizatorii care doresc să se conecteze cu o parolă, datorită caracteristicilor sale de securitate puternice.

Rulează următoarea comandă pentru a crea un utilizator care se autentifică cu caching_sha2_password. Asigură-te că înlocuiești sammy cu numele de utilizator preferat și password cu o parolă puternică la alegerea ta:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Notă: Există o problemă cunoscută cu unele versiuni de PHP care cauzează probleme cu caching_sha2_password. Dacă intenționezi să utilizezi această bază de date cu o aplicație PHP — de exemplu, phpMyAdmin — s-ar putea să dorești să creezi un utilizator care se va autentifica cu pluginul mai vechi, dar încă sigur, mysql_native_password:

CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Dacă nu ești sigur, poți oricând să creezi un utilizator care se autentifică cu pluginul caching_sha2_password și apoi să-l modifici ulterior cu această comandă:

ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

După ce ai creat utilizatorul nou, poți să îi acorzi privilegiile corespunzătoare.


Acordarea Permisiunilor unui Utilizator

Sintaxa generală pentru acordarea privilegiilor unui utilizator este următoarea:

GRANT PRIVILEGE ON database.table TO 'username'@'host';

Valoarea PRIVILEGE din această sintaxă definește acțiunile pe care utilizatorul le poate efectua pe baza de date și tabelul specificat. Poți acorda mai multe privilegii aceluiași utilizator într-o singură comandă, separând fiecare privilegiu prin virgulă. De asemenea, poți acorda utilizatorului privilegii globale, introducând asteriscuri (*) în locul numelor bazei de date și tabelului. În SQL, asteriscurile sunt caractere speciale folosite pentru a reprezenta „toate” bazele de date sau tabelele.

De exemplu, următoarea comandă acordă unui utilizator privilegii globale pentru a crea (CREATE), modifica (ALTER) și șterge (DROP) baze de date, tabele și utilizatori, precum și permisiunea de a insera (INSERT), actualiza (UPDATE) și șterge (DELETE) date din orice tabel de pe server. De asemenea, îi acordă utilizatorului posibilitatea de a interoga date cu SELECT, de a crea chei externe cu cuvântul cheie REFERENCES și de a efectua operații FLUSH cu privilegiul RELOAD. Totuși, ar trebui să acorzi utilizatorilor doar permisiunile de care au nevoie, așa că poți ajusta privilegiile după cum este necesar.

Pentru lista completă a privilegiilor disponibile, consultă documentația oficială MySQL.

Rulează următoarea instrucțiune GRANT, înlocuind sammy cu numele utilizatorului tău MySQL, pentru a-i acorda aceste privilegii:

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Notă că această instrucțiune include și WITH GRANT OPTION. Aceasta va permite utilizatorului tău MySQL să acorde altor utilizatori orice permisiuni pe care le deține el însuși.

Avertisment: Unii utilizatori ar putea dori să acorde utilizatorului MySQL privilegiul ALL PRIVILEGES, care îi va oferi privilegii extinse de tip superuser, asemănătoare cu cele ale utilizatorului root, astfel:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Aceste privilegii extinse nu trebuie acordate cu ușurință, deoarece orice persoană care are acces la acest utilizator MySQL va avea control complet asupra fiecărei baze de date de pe server.

Multe ghiduri sugerează rularea comenzii FLUSH PRIVILEGES imediat după o instrucțiune CREATE USER sau GRANT pentru a reîncărca tabelele de privilegii și a se asigura că noile permisiuni intră în vigoare:

FLUSH PRIVILEGES;

Totuși, conform documentației oficiale MySQL, atunci când modifici tabelele de privilegii indirect cu o instrucțiune de gestionare a conturilor, precum GRANT, baza de date va reîncărca automat tabelele de privilegii în memorie, ceea ce înseamnă că nu este necesară comanda FLUSH PRIVILEGES în acest caz. Pe de altă parte, rularea ei nu va avea niciun efect negativ asupra sistemului.

Dacă ai nevoie să revoci o permisiune, structura este aproape identică cu cea pentru acordarea ei:

REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';

Reține că atunci când revoci permisiuni, sintaxa necesită folosirea cuvântului FROM, în loc de TO pe care l-ai folosit la acordarea permisiunilor.

Poți vizualiza permisiunile curente ale unui utilizator rulând comanda SHOW GRANTS:

SHOW GRANTS FOR 'username'@'host';

La fel cum poți șterge baze de date cu DROP, poți folosi DROP pentru a șterge un utilizator:

DROP USER 'username'@'localhost';

După ce ți-ai creat utilizatorul MySQL și i-ai acordat privilegiile, poți ieși din clientul MySQL:

exit

În viitor, pentru a te autentifica ca noul utilizator MySQL, vei folosi o comandă de forma următoare:

mysql -u sammy -p

Flag-ul -p va face ca clientul MySQL să te solicite parola utilizatorului MySQL pentru a te autentifica.


Concluzie

Urmând acest tutorial, ai învățat cum să adaugi utilizatori noi și să le acorzi o varietate de permisiuni într-o bază de date MySQL. De aici, poți continua să explorezi și să experimentezi cu diferite setări de permisiuni pentru utilizatorul tău MySQL sau poți dori să afli mai multe despre unele configurații MySQL la un nivel mai avansat.

Răspunsul a fost util? 0 utilizatori au considerat informația utilă (0 Voturi)