Om een nieuwe gebruiker in MySQL aan te maken, hebt u voldoende be­heer­ders­rech­ten of su­pe­rus­er­rech­ten nodig waarmee u ge­brui­kers­ac­counts kunt aanmaken en au­to­ri­sa­ties kunt beheren, naast toegang tot de be­tref­fen­de database. U moet ook weten welk type toegang de nieuwe gebruiker nodig heeft, of dat nu lees­rech­ten, schrijf­rech­ten of zelfs be­heer­ders­rech­ten zijn.

Hoe gebruik je het CREATE USER -commando van MySQL?

Bij het in­stal­le­ren van het da­ta­ba­se­be­heer­sys­teem genereert MySQL au­to­ma­tisch een root-account. Dit account geeft u uit­ge­brei­de controle over uw databases, tabellen en ge­brui­kers, waardoor u efficiënt kunt beheren. Als u hulp nodig hebt bij het in­stal­la­tie­pro­ces, vindt u alle es­sen­ti­ë­le in­for­ma­tie in onze MySQL-hand­lei­ding.

Met uw root-account kunt u extra ge­brui­kers­ac­counts of nieuwe MySQL-ge­brui­kers aanmaken en hen au­to­ri­sa­ties toewijzen. Op Ubuntu-systemen met MySQL 5.7 of nieuwere versies is de MySQL-root­ge­brui­ker standaard ge­con­fi­gu­reerd om zichzelf te au­then­ti­ce­ren met de auth_socket in plaats van met een wacht­woord. Dit betekent dat als de naam van de sys­teem­ge­brui­ker die de MySQL-client aanroept, verschilt van de naam van de MySQL-gebruiker die in de opdracht is opgegeven, u de opdracht moet voor­af­gaan met sudo om toegang te krijgen tot uw root-account:

$ sudo mysql
bash

Om een nieuwe gebruiker aan te maken in MySQL, gebruikt u het commando CREATE USER. Hiermee kunt u een gebruiker aanmaken met een spe­ci­fie­ke ge­brui­kers­naam en wacht­woord:

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

Vervang username door een ge­brui­kers­naam naar keuze. Voer onder host de naam in van de host waarmee de nieuwe gebruiker ver­bin­ding 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 au­then­ti­ca­tie­plu­gin hebt u ver­schil­len­de opties. De auth_socket biedt een hoge mate van be­vei­li­ging door ge­brui­kers te vragen een wacht­woord in te voeren voor toegang tot de database. Deze plugin beperkt echter externe ver­bin­din­gen, waardoor externe programma’s mogelijk meer moeite moeten doen om met MySQL te com­mu­ni­ce­ren. Als al­ter­na­tief kunt u het WITH authentication_plugin van de opdracht weglaten om ge­brui­kers te au­then­ti­ce­ren met behulp van de MySQL-stan­daard­plu­gin caching_sha2_password. De opdracht zou er dan als volgt uitzien:

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
bash

Zodra u een nieuwe gebruiker hebt aan­ge­maakt, moet u deze gebruiker au­to­ri­sa­ties toewijzen.

Hoe rechten toewijzen aan ge­brui­kers in MySQL

Het aanmaken en beheren van ge­brui­kers­rech­ten is es­sen­ti­eel voor het handhaven van de ge­ge­vens­be­vei­li­ging in MySQL. Het algemene commando voor het toewijzen van ge­brui­kers­rech­ten is:

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

De 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 op­drach­ten:

  • CREATE: Hiermee kunnen ge­brui­kers een database of tabel maken
  • SELECT: Hiermee kunnen ge­brui­kers gegevens ophalen
  • INSERT: Hiermee kunnen ge­brui­kers nieuwe ver­mel­din­gen aan tabellen toevoegen
  • UPDATE: Hiermee kunnen ge­brui­kers bestaande ver­mel­din­gen in tabellen wijzigen
  • DELETE: Hiermee kunnen ge­brui­kers ta­bel­ver­mel­din­gen ver­wij­de­ren
  • DROP: Ge­brui­kers kunnen volledige da­ta­ba­se­ta­bel­len ver­wij­de­ren

U kunt nieuwe ge­brui­kers 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';
bash

Au­to­ri­sa­ties voor alle databases of tabellen kunnen ook in één enkele opdracht worden verleend door * in te voeren in plaats van de in­di­vi­du­e­le database- en ta­bel­na­men. De volgende opdracht geeft een gebruiker bij­voor­beeld de au­to­ri­sa­tie om gegevens op te vragen (SELECT), nieuwe ver­mel­din­gen toe te voegen (INSERT) en bestaande ver­mel­din­gen te wijzigen (UPDATE) in alle databases en tabellen.

mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';
bash

Nadat u de CREATE USER of GRANT commando’s in MySQL hebt uit­ge­voerd, kunt u het FLUSH PRIVILEGES commando gebruiken om de database bij te werken. Hierdoor worden de au­to­ri­sa­tie­ta­bel­len opnieuw geladen, zodat de nieuwe au­to­ri­sa­ties van kracht worden:

mysql> FLUSH PRIVILEGES;
bash

Het is echter be­lang­rijk om ge­brui­kers alleen de au­to­ri­sa­ties te geven die ze nodig hebben. Als u een gebruiker volledige controle geeft, kan dit een groot vei­lig­heids­ri­si­co vormen.

Hoe ge­brui­kers­rech­ten van ge­brui­kers in MySQL intrekken

Het commando REVOKE wordt gebruikt om ge­brui­kers­rech­ten in MySQL te ver­wij­de­ren. De syntaxis is ver­ge­lijk­baar 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';
bash

Om de huidige au­to­ri­sa­ties van een gebruiker weer te geven, kunt u het commando SHOW GRANTS gebruiken:

mysql> SHOW GRANTS FOR 'username'@'host';
bash

Je kunt het commando DROP gebruiken om een gebruiker te ver­wij­de­ren:

mysql> DROP USER 'username'@'localhost';
bash

Wees uiterst voor­zich­tig bij het ver­wij­de­ren van ge­brui­kers, vooral ge­brui­kers met be­heer­ders­rech­ten. Zorg ervoor dat u alleen ge­brui­kers ver­wij­dert die u echt wilt ver­wij­de­ren om onbedoeld ge­ge­vens­ver­lies te voorkomen.

Zodra u klaar bent met het aanmaken van nieuwe MySQL-ge­brui­kers en het toekennen van rechten, kunt u de MySQL-client afsluiten:

mysql> exit
bash
Ga naar hoofdmenu