Hoe gebruikers aanmaken in MySQL
Om een nieuwe gebruiker in MySQL aan te maken, hebt u voldoende beheerdersrechten of superuserrechten nodig waarmee u gebruikersaccounts kunt aanmaken en autorisaties kunt beheren, naast toegang tot de betreffende database. U moet ook weten welk type toegang de nieuwe gebruiker nodig heeft, of dat nu leesrechten, schrijfrechten of zelfs beheerdersrechten zijn.
Hoe gebruik je het CREATE USER -commando van MySQL?
Bij het installeren van het databasebeheersysteem genereert MySQL automatisch een root-account. Dit account geeft u uitgebreide controle over uw databases, tabellen en gebruikers, waardoor u efficiënt kunt beheren. Als u hulp nodig hebt bij het installatieproces, vindt u alle essentiële informatie in onze MySQL-handleiding.
Met uw root-account kunt u extra gebruikersaccounts of nieuwe MySQL-gebruikers aanmaken en hen autorisaties toewijzen. Op Ubuntu-systemen met MySQL 5.7 of nieuwere versies is de MySQL-rootgebruiker standaard geconfigureerd om zichzelf te authenticeren met de auth_socket in plaats van met een wachtwoord. Dit betekent dat als de naam van de systeemgebruiker die de MySQL-client aanroept, verschilt van de naam van de MySQL-gebruiker die in de opdracht is opgegeven, u de opdracht moet voorafgaan met sudo om toegang te krijgen tot uw root-account:
$ sudo mysqlbashOm een nieuwe gebruiker aan te maken in MySQL, gebruikt u het commando CREATE USER. Hiermee kunt u een gebruiker aanmaken met een specifieke gebruikersnaam en wachtwoord:
mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';bashVervang username door een gebruikersnaam naar keuze. Voer onder host de naam in van de host waarmee de nieuwe gebruiker verbinding kan maken. Als de gebruiker alleen toegang tot de database mag hebben vanaf uw lokale Ubuntu-server, kunt u localhost invoeren.
Bij het kiezen van de authenticatieplugin hebt u verschillende opties. De auth_socket biedt een hoge mate van beveiliging door gebruikers te vragen een wachtwoord in te voeren voor toegang tot de database. Deze plugin beperkt echter externe verbindingen, waardoor externe programma’s mogelijk meer moeite moeten doen om met MySQL te communiceren. Als alternatief kunt u het WITH authentication_plugin van de opdracht weglaten om gebruikers te authenticeren met behulp van de MySQL-standaardplugin caching_sha2_password. De opdracht zou er dan als volgt uitzien:
mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';bashZodra u een nieuwe gebruiker hebt aangemaakt, moet u deze gebruiker autorisaties toewijzen.
Hoe rechten toewijzen aan gebruikers in MySQL
Het aanmaken en beheren van gebruikersrechten is essentieel voor het handhaven van de gegevensbeveiliging in MySQL. Het algemene commando voor het toewijzen van gebruikersrechten is:
mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';bashDe waarde PRIVILEGE bepaalt welke acties de gebruiker kan uitvoeren in de opgegeven database en tabel. U kunt deze waarde onder andere vervangen door de volgende opdrachten:
CREATE: Hiermee kunnen gebruikers een database of tabel makenSELECT: Hiermee kunnen gebruikers gegevens ophalenINSERT: Hiermee kunnen gebruikers nieuwe vermeldingen aan tabellen toevoegenUPDATE: Hiermee kunnen gebruikers bestaande vermeldingen in tabellen wijzigenDELETE: Hiermee kunnen gebruikers tabelvermeldingen verwijderenDROP: Gebruikers kunnen volledige databasetabellen verwijderen
U kunt nieuwe gebruikers ook meerdere rechten tegelijk toekennen. Wanneer u dit doet, moet u de rechten met een komma van elkaar scheiden:
mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';bashAutorisaties voor alle databases of tabellen kunnen ook in één enkele opdracht worden verleend door * in te voeren in plaats van de individuele database- en tabelnamen. De volgende opdracht geeft een gebruiker bijvoorbeeld de autorisatie om gegevens op te vragen (SELECT), nieuwe vermeldingen toe te voegen (INSERT) en bestaande vermeldingen te wijzigen (UPDATE) in alle databases en tabellen.
mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';bashNadat u de CREATE USER of GRANT commando’s in MySQL hebt uitgevoerd, kunt u het FLUSH PRIVILEGES commando gebruiken om de database bij te werken. Hierdoor worden de autorisatietabellen opnieuw geladen, zodat de nieuwe autorisaties van kracht worden:
mysql> FLUSH PRIVILEGES;bashHet is echter belangrijk om gebruikers alleen de autorisaties te geven die ze nodig hebben. Als u een gebruiker volledige controle geeft, kan dit een groot veiligheidsrisico vormen.
Hoe gebruikersrechten van gebruikers in MySQL intrekken
Het commando REVOKE wordt gebruikt om gebruikersrechten in MySQL te verwijderen. De syntaxis is vergelijkbaar met die van het commando GRANT. Bij dit commando moet u echter FROM gebruiken in plaats van TO:
mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';bashOm de huidige autorisaties van een gebruiker weer te geven, kunt u het commando SHOW GRANTS gebruiken:
mysql> SHOW GRANTS FOR 'username'@'host';bashJe kunt het commando DROP gebruiken om een gebruiker te verwijderen:
mysql> DROP USER 'username'@'localhost';bashWees uiterst voorzichtig bij het verwijderen van gebruikers, vooral gebruikers met beheerdersrechten. Zorg ervoor dat u alleen gebruikers verwijdert die u echt wilt verwijderen om onbedoeld gegevensverlies te voorkomen.
Zodra u klaar bent met het aanmaken van nieuwe MySQL-gebruikers en het toekennen van rechten, kunt u de MySQL-client afsluiten:
mysql> exitbash