Kako kreirati novog korisnika i dodijeliti dozvole u MySQL-u


MySQL je popularan i široko korišten sistem za upravljanje bazom podataka koji pohranjuje i organizira podatke i omogućava korisnicima da ih dohvate. Dolazi sa širokim spektrom opcija koje korisnicima daju određene dozvole za tabele i baze podataka.

U ovom vodiču ćete naučiti kako kreirati novog korisnika i dodijeliti dozvole u bazi podataka MySQL.

Kako kreirati novog korisnika u MySQL-u

Da biste kreirali novog korisnika, prvo se prijavite na MySQL ljusku.

sudo mysql -u root -p

Unesite sudo lozinku praćenu lozinkom koja je data prilikom postavljanja MySQL baze podataka i pritisnite ENTER. Nakon toga, dobićete ovaj upit.

Da kreirate novog korisnika, koristite sintaksu prikazanu ispod:

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Na primjer, da kreirate novog korisnika pod nazivom 'tecmint' unutar baze podataka, pozovite naredbu:

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

Nekoliko tačaka koje treba imati na umu

Prilikom lokalnog dodavanja korisnika, tj. na sistemu koji ste instalirali MySQL, korisnikov host se navodi kao localhost, a ne IP adresa. Ključna riječ "localhost" prevodi se u "ovaj računar" i MySQL ga tretira jedinstveno. U osnovi, mysql klijent koristi localhost za uspostavljanje veze sa lokalno instaliranim MySQL serverom baze podataka.

Za sada, tecmint korisnik nema nikakve dozvole za interakciju sa bazama podataka. U stvari, korisnik ne može čak ni pristupiti MySQL ljusci.

Da biste korisniku dali puni pristup svim bazama podataka, uključujući tabele, pokrenite.

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

U gornjoj naredbi, zvjezdice ukazuju na bazu podataka i tablicu kojoj korisnik može pristupiti. On daje korisniku sva prava na bazu podataka – čitanje, pisanje, uređivanje i izvršavanje uključujući izvođenje svih zadatke u drugim bazama podataka i tabelama.

Do sada smo korisniku dali potpuni pristup bazi podataka. Iako je ovo zgodno za objašnjavanje MySQL koncepata, generalno se ne preporučuje jer bi moglo predstavljati sigurnosni rizik za vaše baze podataka. Zamislite samo šta bi se moglo dogoditi ako haker dođe do korisničke lozinke. Nastavit ćemo dalje i razgovarati o tome kako dodijeliti posebne dozvole u sljedećem odjeljku.

Kada završite sa dodjeljivanjem dozvola korisniku, ponovo učitajte sve privilegije kao što je prikazano kako bi promjene stupile na snagu.

MariaDB [none]> FLUSH PRIVILEGES

Kako dodijeliti različite korisničke dozvole

Evo raščlambe mogućih dozvola koje možete dodijeliti korisnicima:

  • SVE PRIVILEGIJE – Kao što smo već vidjeli, ovo daje MySQL korisniku potpuni pristup određenoj bazi podataka.
  • CREATE – Omogućava korisnicima da kreiraju nove baze podataka ili tabele.
  • DROP – Omogućuje korisnicima brisanje baza podataka ili korisnika.
  • INSERT – Omogućava korisnicima da umetnu redove u tabele.
  • BRIŠI – Omogućava korisnicima brisanje redova iz tabela.
  • ODABIR – uz dozvolu 'SELECT', korisnici mogu čitati sadržaj tabele.
  • UPDATE – Omogućava korisnicima da ažuriraju redove u tabeli.
  • OPCIJA DOZVOLE – Korisnici mogu odobriti ili ukloniti privilegije drugih korisnika.

Da biste dodijelili određenu korisničku dozvolu, koristite sintaksu:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

Dodatno, možete dodijeliti dozvole svim tablicama u bazi podataka sa jednim simbolom zvjezdice kao što je prikazano:

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

Na primjer, da biste dodijelili dozvole SELECT korisniku 'tecmint' na svim tabelama baze podataka testdb, pokrenite naredbu.

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

Zatim ispraznite privilegije kako bi promjene stupile na snagu.

MariaDB [none]> FLUSH PRIVILEGES;

Osim toga, možete dodijeliti više dozvola odjednom tako što ćete ih odvojiti zarezom kao što je prikazano.

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

Kako opozvati MySQL dozvole

Da opozovete dozvole od korisnika, koristite sintaksu:

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

Na primjer, da opozovete INSERT dozvole od korisnika 'tecmint', pokrenite naredbu.

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

Da biste zavirili u trenutne dozvole korisnika, izvršite:

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

Iz donjeg izlaza možemo vidjeti da je dozvola INSERT izbrisana od korisnika 'tecmint' ostavljajući samo SELECT i UPDATE prava na testdb bazu podataka.

Da biste testirali prijavu na MySQL ljusku koristeći novog korisnika, prvo se odjavite.

MariaDB [none]> quit;

Zatim se ponovo prijavite.

sudo mysql -u tecmint -p

Unesite lozinku korisnika i pritisnite ENTER za pristup ljusci.

Da ispustite korisnika, koristite naredbu DROP, baš kao što biste to učinili kada brišete bazu podataka.

MariaDB [none]> DROP USER 'username'@'localhost';

Možda biste željeli pročitati i sljedeće članke vezane za MySQL:

  • Korisni savjeti za rješavanje uobičajenih grešaka u MySQL-u
  • Mytop – Koristan alat za praćenje performansi MySQL/MariaDB u Linuxu
  • Kako promijeniti zadani MySQL/MariaDB port u Linuxu
  • Kako resetirati MySQL ili MariaDB root lozinku u Linuxu
Zaključak

Nadajmo se da do sada možete kreirati korisnike na svojim MySQL serverima baze podataka i udobno dodijeliti ili opozvati dozvole.