Categories
SQL

Acordarea si revocarea accesului in MySQL

Pentru administrarea utilizatorilor din MySQL mai intai trebuie sa ne autentificam cu unul din utilizatorii cu drepturi corespunzatoare. Pentru exemplu voi folosi utilizatorul root:

mysql -u root -ppassword

Pentru crearea unui utilizator nou se foloseste comanda CREATE USER:

mysql> CREATE USER 'nume_utilizator'@'localhost' IDENTIFIED BY 'parola_utilizator';

Daca nu se specifica clauza IDENTIFIED BY, utilizatorul nou creat se va putea autentific fara parola.

Urmeaza acordarea de drepturi utilizatorului nou creat:

mysql> GRANT ALL ON db_name.* TO 'nume_utilizator'@'localhost';

sau

mysql> GRANT INSERT, SELECT ON db_name.* TO 'nume_utilizator'@'localhost';

Pentru a restrictiona accesul la o singura tabela dintr-o baza de date:

mysql> GRANT ALL ON db_name.table_name TO 'nume_utilizator'@'localhost';

Pentru a restrictiona accesul la anumite coloane dintr-o tabela:

mysql> GRANT SELECT(col1), INSERT(col1, col2) ON db_name.table_name TO 'nume_utilizator'@'localhost';

Pentru a crea un utilizator si a atribui drepturile dorite intr-un singur pas, se poate folosi comanda:

mysql> GRANT ALL ON db_name.* TO 'nume_utilizator'@'localhost' IDENTIFIED BY 'parola_utilizator';

Un aspect de luat in considerare este faptul ca, implicit, orice utilizator are acces nelimitat la toate bazele de date a caror denumire incepe cu “test_”. Acest lucru este util in cazul efectuarii testelor, dar nu este recomandat in configuratiile/sistemele productive. Administratorii care doresc sa inlature aceste drepturi implicite, trebuie sa stearga din tabela mysql.db liniile care se refera la accesul la bazele de date cu denumiri de forma “table_%”.

Drepturile unui utilizator pot fi vizualizate cu comanda SHOW GRANTS:

mysql> SHOW GRANTS FOR 'nume_utilizator'@'localhost';

Pentru revocarea drepturilor pe o anumita baza de date, pentru un utilizator, se foloseste, dupa caz, una din variantele urmatoare ale comenzii REVOKE:

mysql> REVOKE ALL PRIVILEGES FROM 'nume_utilizator'@'localhost';

sau

mysql> REVOKE INSERT,SELECT ON db_name.* FROM 'nume_utilizator'@'localhost';

Comanda REVOKE doar inlatura drepturile specificate pentru utilizatorul specificat, dar nu sterge utilizatorul. Stergerea unui utilizator se efectueaza folosind comanda DROP USER:

mysql> DROP USER 'nume_utilizator'@'localhost';

Modificarea parolei unui utilizator poate fi realizata cu comanda:

mysql> SET PASSWORD FOR 'nume_utilizator'@'localhost' = PASSWORD('parola');

Daca nu este speficicata clauza FOR ‘nume_utilizator’@’localhost’ parola va fi setata pentru utilizatorul curent, cel autentificat. In cazul in care este specificata aceasta clauza, utilizatorul specificat trebuie sa existe.

Informatii suplimentare pot fi gasite in manualul MySQL:
https://dev.mysql.com/doc/refman/5.5/en/account-management-sql.html

Leave a Reply

Your email address will not be published. Required fields are marked *