Een Dedicated gebruiker en rechten toekennen

Na installatie maakt MySQL een rootgebruikersaccount aan die je kunt gebruiken om je database te beheren. Deze gebruiker heeft volledige privileges over de MySQL-server, wat betekent dat hij volledige controle heeft over elke database, tabel, gebruiker, enzovoort. Daarom is het het beste om dit account niet buiten administratieve functies te gebruiken. In deze stap wordt beschreven hoe je de MySQL- rootgebruiker gebruikt om een ​​nieuw gebruikersaccount aan te maken en deze rechten te verlenen.

sudo mysql 

Opmerking: als je MySQL samen met een andere tutorial hebt geïnstalleerd en wachtwoordverificatie voor root hebt ingeschakeld , moet je een ander commando gebruiken om toegang te krijgen tot de MySQL-shell. Het volgende zal uw MySQL-client uitvoeren met normale gebruikersrechten, en je krijgt alleen beheerdersrechten binnen de database door te verifiëren:

sudo mysql -u root -p 

Zodra je toegang hebt tot de MySQL-prompt, kun je een nieuwe gebruiker aanmaken met een CREATE USERinstructie. Deze volgen deze algemene syntaxis:

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

Daarna CREATE USERspecificeert je een gebruikersnaam. Dit wordt onmiddellijk gevolgd door een @teken en vervolgens de hostnaam waarmee deze gebruiker verbinding zal maken. Als je alleen van plan bent om deze gebruiker lokaal te benaderen vanaf je Ubuntu-server, kun je specificeren localhost. Het is niet altijd nodig om zowel de gebruikersnaam als de host tussen enkele aanhalingstekens te plaatsen, maar dit kan helpen om fouten te voorkomen.

Voer de volgende opdracht uit om een ​​gebruiker te maken waarmee wordt geverifieerd caching_sha2_password. Zorg ervoor dat je lindauw gebruikersnaam en passwordeen sterk wachtwoord naar keuze wijzigt :

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

Opmerking: er is een bekend probleem met sommige versies van PHP dat problemen veroorzaakt met caching_sha2_password. Als je van plan bent om deze database te gebruiken met een PHP-applicatie, bijvoorbeeld phpMyAdmin, wil je misschien een gebruiker aanmaken die zich zal authenticeren met de oudere, maar nog steeds veilige mysql_native_passwordplug-in:

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

Als je het niet zeker weet, kun je altijd een gebruiker maken die zich aanmeldt met caching_sha2_pluginen ALTERdeze later met deze opdracht:

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

Nadat je de nieuwe gebruiker hebt aangemaakt, kun je deze de juiste rechten verlenen. De algemene syntaxis voor het toekennen van gebruikersrechten is als volgt:

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

De PRIVILEGEwaarde in de syntaxis van dit voorbeeld definieert welke acties de gebruiker mag uitvoeren op de opgegeven databaseen table. Je kunt in één opdracht meerdere rechten toekennen aan dezelfde gebruiker door ze te scheiden met een komma. Je kunt een gebruiker ook globaal privileges verlenen door asterisks ( *) in te voeren in plaats van de database- en tabelnamen. In SQL zijn asterisken speciale tekens die worden gebruikt om "alle" databases of tabellen weer te geven.

Ter illustratie, de volgende opdracht geeft een gebruiker wereldwijde rechten om CREATE, ALTERen DROPdatabases, tabellen en gebruikers, evenals de bevoegdheid om INSERT, UPDATEen DELETEgegevens van een tabel op de server. Het geeft de gebruiker ook de mogelijkheid om gegevens op te vragen SELECT, externe sleutels te maken met het REFERENCESsleutelwoord en FLUSHbewerkingen uit te voeren met het RELOADrecht. Geef gebruikers echter alleen de rechten die ze nodig hebben, dus voel je vrij om de rechten van je eigen gebruikers aan te passen als dat nodig is.

Voer deze GRANTinstructie uit en vervang deze lindadoor je eigen MySQL-gebruikersnaam om je gebruiker deze rechten te verlenen:

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

Waarschuwing : sommige beheerders willen misschien hun MySQL-gebruiker het ALL PRIVILEGESprivilege geven, waardoor ze brede superuser-privileges krijgen die vergelijkbaar zijn met de privileges van de root gebruiker, zoals:

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

Dergelijke brede privileges moeten niet te makkelijk worden toegekend, aangezien iedereen met toegang tot deze MySQL-gebruiker volledige controle heeft over elke database op de server.

Hierna is het een goede gewoonte om de FLUSH PRIVILEGESopdracht uit te voeren. Zo zal er geen geheugen dat de server in de cache als een resultaat van het voorgaande CREATE USERen GRANTverklaringen:

FLUSH PRIVILEGES; 

Vervolgens kunt je de MySQL-client verlaten:

exit 

Om in de toekomst in te loggen als je nieuwe MySQL-gebruiker, gebruik je een commando zoals het volgende:

mysql -u linda -p 

De -pvlag zorgt ervoor dat de MySQL-client je vraagt ​​om het wachtwoord van je MySQL-gebruiker om te verifiëren.