Si të krijoni një përdorues të ri dhe të jepni leje në MySQL
Prezantimi
databaza me burim të hapur më popullor në botë.
Ky udhëzues përshkruan se si të krijoni një përdorues të ri MySQL dhe t'i jepni atij lejet e nevojshme për të kryer një sërë veprimesh.
Parakushtet
Në mënyrë që të ndiqni këtë udhëzues, do t'ju duhet qasje në një bazë të dhënash MySQL. Ky udhëzues supozon se kjo bazë të dhënash është e instaluar në një server privat virtual që ekzekuton Ubuntu 20.04, megjithëse parimet që ai përshkruan duhet të jenë të zbatueshme pavarësisht se si i qaseni bazës së të dhënave.
Nëse nuk keni akses në një bazë të dhënash MySQL dhe dëshironi ta konfiguroni vetë, mund të ndiqni një nga udhëzuesit tanë se si të instaloni MySQL. Përsëri, pavarësisht nga sistemi operativ themelor i serverit tuaj, metodat për krijimin e një përdoruesi të ri MySQL dhe dhënien e lejeve të tyre në përgjithësi do të jenë të njëjta.
Në mënyrë alternative, mund të rrotulloni një bazë të dhënash MySQL të menaxhuar nga një ofrues cloud. Për detaje se si të hapni një bazë të dhënash të menaxhuar nga DigitalOcean, shihni dokumentacionin tonë të produktit.
Ju lutemi vini re se çdo pjesë e komandave shembull që ju duhet të ndryshoni ose personalizoni do të theksohen si kjo
përgjatë këtij udhëzuesi.
Krijimi i një përdoruesi të ri
Pas instalimit, MySQL krijon një llogari përdoruesi root të cilën mund ta përdorni për të menaxhuar bazën e të dhënave tuaja. Ky përdorues ka privilegje të plota mbi serverin MySQL, që do të thotë se ka kontroll të plotë mbi çdo bazë të dhënash, tabelë, përdorues e kështu me radhë. Për shkak të kësaj, është më mirë të shmangni përdorimin e kësaj llogarie jashtë funksioneve administrative. Ky hap përshkruan se si të përdoret përdoruesi root MySQL për të krijuar një llogari të re përdoruesi dhe për t'i dhënë privilegje.
Në sistemet Ubuntu që ekzekutojnë MySQL 5.7
(dhe versionet e mëvonshme), përdoruesi root MySQL është caktuar të vërtetojë duke përdorur shtojcën auth_socket
si parazgjedhje dhe jo me një fjalëkalim. Kjo shtojcë kërkon që emri i përdoruesit të sistemit operativ që thërret klientin MySQL të përputhet me emrin e përdoruesit MySQL të specifikuar në komandë. Kjo do të thotë që ju duhet t'i paraprini komandës mysql
me sudo
për ta thirrur atë me privilegjet e përdoruesit të root Ubuntu në mënyrë që të keni akses në përdoruesi rrënjë MySQL:
- sudo mysql
Shënim: Nëse përdoruesi juaj root MySQL është konfiguruar për të vërtetuar me një fjalëkalim, do t'ju duhet të përdorni një komandë tjetër për të hyrë në guaskën MySQL. Më poshtë do të ekzekutojë klientin tuaj MySQL me privilegje të rregullta përdoruesi dhe ju do të fitoni privilegje administratori brenda bazës së të dhënave vetëm duke vërtetuar me fjalëkalimin e saktë:
- mysql -u root -p
Pasi të keni akses në prompt MySQL, mund të krijoni një përdorues të ri me një deklaratë CREATE USER
. Këto ndjekin këtë sintaksë të përgjithshme:
- CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
Pas KRIJO PERDORUES
, ju specifikoni një emër përdoruesi. Kjo pasohet menjëherë nga një shenjë @
dhe më pas emri i hostit nga i cili do të lidhet ky përdorues. Nëse planifikoni të aksesoni këtë përdorues vetëm në nivel lokal nga serveri juaj Ubuntu, mund të specifikoni localhost
. Mbështjellja e emrit të përdoruesit dhe hostit në thonjëza të vetme nuk është gjithmonë e nevojshme, por bërja e kësaj mund të ndihmojë në parandalimin e gabimeve.
Ju keni disa opsione kur bëhet fjalë për zgjedhjen e shtojcës së vërtetimit të përdoruesit tuaj. Shtojca auth_socket
e përmendur më parë mund të jetë e përshtatshme, pasi ofron siguri të fortë pa u kërkuar përdoruesve të vlefshëm të fusin një fjalëkalim për të hyrë në bazën e të dhënave. Por gjithashtu parandalon lidhjet në distancë, të cilat mund t'i komplikojnë gjërat kur programet e jashtme duhet të ndërveprojnë me MySQL.
Si një alternativë, mund të lini plotësisht pjesën ME authentication_plugin
të pjesës së sintaksës për të bërë që përdoruesi të vërtetojë me shtojcën e paracaktuar të MySQL, caching_sha2_password
. Dokumentacioni MySQL rekomandon këtë shtojcë për përdoruesit që duan të identifikohen me një fjalëkalim për shkak të veçorive të forta të sigurisë.
Ekzekutoni komandën e mëposhtme për të krijuar një përdorues që vërteton me caching_sha2_password
. Sigurohuni që të ndryshoni sammy
në emrin tuaj të preferuar të përdoruesit dhe fjalëkalimin
në një fjalëkalim të fortë sipas zgjedhjes suaj:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Shënim: Ekziston një problem i njohur me disa versione të PHP që shkakton probleme me caching_sha2_password
. Nëse planifikoni ta përdorni këtë bazë të dhënash me një aplikacion PHP - phpMyAdmin, për shembull - mund të dëshironi të krijoni një përdorues që do të vërtetojë me shtojcën më të vjetër, megjithëse ende të sigurt, mysql_native_password
në vend të kësaj:
- CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Nëse nuk jeni i sigurt, mund të krijoni gjithmonë një përdorues që vërteton me caching_sha2_plugin
dhe më pas ALTER
më vonë me këtë komandë:
- ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Pas krijimit të përdoruesit tuaj të ri, ju mund t'i jepni atij privilegjet e duhura.
Dhënia e lejeve të një përdoruesi
Sintaksa e përgjithshme për dhënien e privilegjeve të përdoruesit është si më poshtë:
- GRANT PRIVILEGE ON database.table TO 'username'@'host';
Vlera PRIVILEGE
në këtë sintaksë shembull përcakton se çfarë veprimesh lejohet të kryejë përdoruesi në bazën e të dhënave
të specifikuar dhe tabela
. Ju mund t'i jepni privilegje të shumta të njëjtit përdorues në një komandë duke e ndarë secilën me një presje. Ju gjithashtu mund t'i jepni një përdoruesi privilegje globalisht duke vendosur yjet (*
) në vend të emrave të bazës së të dhënave dhe tabelave. Në SQL, yjet janë karaktere speciale që përdoren për të përfaqësuar \të gjitha\ bazat e të dhënave ose tabelat.
Për ta ilustruar, komanda e mëposhtme i jep një përdoruesi privilegje globale për bazat e të dhënave, tabelat dhe përdoruesit CREATE
, ALTER
dhe DROP
, si dhe fuqizoni të dhënat INSERT
, UPDATE
dhe DELETE
nga çdo tabelë në server. Ai gjithashtu i jep përdoruesit mundësinë për të kërkuar të dhëna me SELECT
, për të krijuar çelësa të huaj me fjalën kyçe REFERENCES
dhe për të kryer operacionet FLUSH
me RINGARKO
. Sidoqoftë, duhet t'u jepni përdoruesve vetëm lejet që u nevojiten, kështu që mos ngurroni të rregulloni privilegjet e përdoruesit tuaj sipas nevojës.
Ju mund të gjeni listën e plotë të privilegjeve të disponueshme në dokumentacionin zyrtar të MySQL.
Ekzekutoni këtë deklaratë GRANT
, duke zëvendësuar sammy
me emrin e përdoruesit tuaj MySQL, për t'i dhënë këto privilegje përdoruesit tuaj:
- GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Vini re se kjo deklaratë përfshin gjithashtu ME OPTION GRANT
. Kjo do të lejojë përdoruesin tuaj MySQL të japë çdo leje që ka për përdoruesit e tjerë në sistem.
Paralajmërim: Disa përdorues mund të dëshirojnë t'i japin përdoruesit e tyre MySQL privilegjin ALL PRIVILEGES
, i cili do t'u sigurojë atyre privilegje të gjera superpërdoruesi të ngjashme me përdoruesit rrënjë privilegje, si kështu:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Privilegje të tilla të gjera nuk duhet të jepen lehtë, pasi kushdo që ka akses në këtë përdorues të MySQL do të ketë kontroll të plotë mbi çdo bazë të dhënash në server.
Shumë udhëzues sugjerojnë ekzekutimin e komandës FLUSH PRIVILEGES
menjëherë pas një deklarate CREATE USER
ose GRANT
në mënyrë që të ringarkoni tabelat e granteve për të siguruar që privilegjet e reja janë vënë në fuqi:
- FLUSH PRIVILEGES;
Megjithatë, sipas dokumentacionit zyrtar të MySQL, kur modifikoni tabelat e granteve në mënyrë indirekte me një deklaratë të menaxhimit të llogarisë si GRANT
, baza e të dhënave do të ringarkojë tabelat e granteve menjëherë në memorie, që do të thotë se PRIVILEGJET FLUSH Komanda
nuk është e nevojshme në rastin tonë. Nga ana tjetër, ekzekutimi i tij nuk do të ketë ndonjë efekt negativ në sistem.
Nëse keni nevojë të revokoni një leje, struktura është pothuajse identike me dhënien e saj:
- REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
Vini re se kur revokoni lejet, sintaksa kërkon që të përdorni FROM
, në vend të TO
që keni përdorur gjatë dhënies së lejeve.
Ju mund të rishikoni lejet aktuale të një përdoruesi duke ekzekutuar komandën SHOW GRANTS
:
- SHOW GRANTS FOR 'username'@'host';
Ashtu siç mund të fshini bazat e të dhënave me DROP
, mund të përdorni DROP
për të fshirë një përdorues:
- DROP USER 'username'@'localhost';
Pas krijimit të përdoruesit tuaj MySQL dhe dhënies së privilegjeve, mund të dilni nga klienti MySQL:
- exit
Në të ardhmen, për t'u identifikuar si përdoruesi juaj i ri MySQL, do të përdorni një komandë si më poshtë:
- mysql -u sammy -p
Flamuri -p
do të bëjë që klienti MySQL t'ju kërkojë fjalëkalimin e përdoruesit tuaj MySQL në mënyrë që të vërtetohet.
konkluzioni
Duke ndjekur këtë tutorial, ju keni mësuar se si të shtoni përdorues të rinj dhe t'u jepni atyre një sërë lejesh në një bazë të dhënash MySQL. Nga këtu, mund të vazhdoni të eksploroni dhe eksperimentoni me cilësime të ndryshme të lejeve për përdoruesin tuaj MySQL, ose mund të dëshironi të mësoni më shumë rreth disa konfigurimeve të nivelit më të lartë MySQL.
Për më shumë informacion rreth bazave të MySQL, mund të shikoni mësimet e mëposhtme:
- Si të krijoni dhe menaxhoni bazat e të dhënave në MySQL dhe MariaDB në një server në renë kompjuterike
- Si të konfiguroni replikimin në MySQL
- Si të konfiguroni përsëritjen e grupit MySQL në Ubuntu 20.04