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:
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ă:
Odată ce ai acces la promptul MySQL, poți crea un utilizator nou folosind o instrucțiune CREATE USER
. Sintaxa generală este următoarea:
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:
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:
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ă:
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:
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:
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:
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:
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:
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
:
La fel cum poți șterge baze de date cu DROP
, poți folosi DROP
pentru a șterge un utilizator:
După ce ți-ai creat utilizatorul MySQL și i-ai acordat privilegiile, poți ieși din clientul MySQL:
În viitor, pentru a te autentifica ca noul utilizator MySQL, vei folosi o comandă de forma următoare:
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.