MySQL is een van de meest gebruikte relationele database managementsystemen (RDBMS) van dit moment. Het is een robuust databaseplatform waarmee schaalbare databases gemaakt en beheerd kunnen worden, voornamelijk met behulp van een structured query language (SQL).

De MySQL server is de omgeving waarin de databases zich bevinden – en de plek van waaruit ze interactie hebben. Als serverbeheerder zul je vaak gegevens over deze omgeving moeten opvragen – een lijst van de databases die op de server staan, tabellen van een bepaalde database weergeven, gebruikersrollen en -rechten bekijken, beperkingen opvragen, enzovoort.

Dit artikel legt de ins en outs uit van hoe je MySQL databases kunt opsommen via de commandoprompt.

Voorwaarden om MySQL databases op te sommen

Je moet de MySQL server op je lokale machine hebben draaien om te kunnen beginnen. Als je MySQL niet hebt, zijn er een paar manieren om het te installeren:

  • Installeer WAMPServer, XAMPP, MAMP, of een andere softwaredistributiestack die MySQL bevat.
  • Download en draai het MySQL installatieprogramma rechtstreeks van hun officiële website en doorloop het installatieproces om de MySQL server en andere tools te configureren en te installeren.

Om gemakkelijk MySQL commando’s uit te voeren via de commandoregel, moet je het pad van de MySQL executable toevoegen aan de omgeving van je systeem. Als je MySQL hebt geïnstalleerd met optie twee, is deze stap niet nodig, dus sla de volgende sectie gerust over.

Het MySQL pad toevoegen aan de variabele omgeving van je systeem

Deze sectie helpt je bij het toevoegen van het uitvoerbare pad van MySQL aan de variabele omgeving van je systeem als je XAMPP of WAMP draait op een Windows computer.

Start eerst je Windows bestandsverkenner en navigeer naar This PC. Klik op het station waar je het WAMP of XAMPP pakket hebt geïnstalleerd (C:).

Als je XAMPP draait, navigeer dan naar xampp > mysql > bin en kopieer het volledige pad naar de bin map. Voor WAMP navigeer je via {jouw-wamp-versie} > bin > mysql > {jouw-wamp-versie} > bin naar het volledige pad.

Het volledige pad voor toegang tot MySQL CLI.
Het volledige pad naar de bin map.

Klik op het menu Start en zoek naar “path”. Klik op Edit the system environment variable.

Klik dan onder Startup and Recovery op Environment Variables, selecteer de PATH variabele en klik op Edit.

Klik vervolgens op New en plak het volledige pad naar je MySQL executable (dat je eerder hebt gekopieerd).

Het bewerken van de omgevingsvariabele.
Het bewerken van de omgevingsvariabele.

Sla vervolgens de wijzigingen op door op OK te klikken.

Nu het pad is toegevoegd, kun je MySQL commando’s in de terminal uitvoeren.

Inloggen op MySQL

Om verzoeken te kunnen sturen naar een MySQL database, moet de gebruiker geautoriseerd zijn voor toegang tot alle databases, of je moet een globaal SHOW DATABASES privilege instellen dat toegang verleent aan alle gebruikers.

Zorg ervoor dat je MySQL server draait voordat je inlogt via de opdrachtprompt:

mysql -u  -p

OPMERKING: vervang door je gebruikersnaam. De standaard gebruikersnaam voor MySQL is root, en het wachtwoord is leeg (er is standaard geen wachtwoord).

Inloggen op MySQL via de terminal.
Inloggen bij MySQL.

Databases binnen de MySQL server tonen

Nu je ingelogd bent, kun je de MySQL databases die in de server aanwezig zijn opsommen door het commando SHOW DATABASES uit te voeren:

SHOW DATABASES;

In ruil daarvoor krijg je alle databases die in de opslag aanwezig zijn:

MySQL databases weergeven.
Een lijst van databases die in de opslag aanwezig zijn.

Van de zes geretourneerde databases zijn information_schema en performance_schema de standaard databases die automatisch worden gegenereerd als je MySQL installeert.

De database information_schema is een niet-wijzigbare database die alle informatie opslaat over databases en andere objecten (views, gebruikersrechten, tabellen, constraints, enz.) die in de MySQL server zijn opgeslagen.

Resultaten van de databaseuitvoer filteren

Voorheen kreeg je alle databases op de MySQL server terug met SHOW DATABASES, maar vaak moet je de database uitvoer filteren, vooral als er veel databases op de server staan.

De LIKE clausule filtert het resultaat van SHOW DATABASE op basis van een gespecificeerd patroon. Dit is de algemene syntaxis:

SHOW DATABASES LIKE '';

Het moet een string zijn die het patroon voorstelt waarmee je wilt overeenkomen. De string moet eindigen met het procentsymbool, %, dat een of meer tekens aangeeft.

Als je bijvoorbeeld alleen de databases wilt weergeven waarvan de naam begint met de letter w, doe je dat door het volgende uit te voeren:

SHOW DATABASES LIKE 'w%';

Hier is het gefilterde resultaat:

Filter-lijst-mysql-databases
Het gefilterde databasereactie bij gebruik van ‘w%’.

Information schema gebruiken om tabelmetadata op te vragen

Eerder zag je hoe de database information_schema alle informatie opslaat die betrekking heeft op databases, tabellen en andere objecten in de MySQL serveromgeving.

De database information_schema maakt gebruik van de schemata-tabel om informatie over alle databases op te slaan. Om databases te filteren kun je een complexe zoekopdracht uitvoeren om de schema-tabel te query’en over specifieke databases.

Als je bijvoorbeeld databases wilt hebben waarvan de namen beginnen met “samp” of “word”, kun je verschillende andere clausules combineren om een complexe query te maken:

SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE 'samp%' OR schema_name LIKE 'word%';

Dit is het resultaat:

De opdracht "SELECT schema_name FROM" van MySQL gebruiken.
De resultaten van de complexe query.

Daarnaast heb je de tabel tables uit de database information_schema, die informatie bevat over alle tabellen. Op dezelfde manier kun je een query uitvoeren om alleen de tabellen op te nemen die overeenkomen met een gespecificeerd patroon.

De volgende query geeft bijvoorbeeld de schema-informatie van alleen de WordPress tabellen terug – alleen de tabellen waarvan de naam begint met “wp_”:

SELECT * FROM information_schema.tables WHERE table_name LIKE 'wp_%';

Dit is het resultaat:

De wp_tables MySQL databasetabel listen.
De resultaten van de schema informatie van alleen de WordPress tabellen.

Andere tabellen die in information_schema worden gevonden zijn columns, constraints, table_constraints, check_constraints, en referential_constraints.

Veelvoorkomende problemen en best practices

Een van de meest voorkomende oorzaken van fouten bij het uitvoeren van SQL is het niet gebruiken van een puntkomma aan het eind van statements.

Een andere oorzaak is het gebruik van een ongeldige SQL syntaxis of een verkeerd gespelde tabel/kolomnaam. Om dit te voorkomen moet je de naam van de tabel of kolom controleren op de juiste spelling. Controleer ook je syntaxis.

Hier zijn nog enkele andere best practices om in gedachten te houden.

Gebruik hoofdletters voor SQL keywords

Als je SQL code schrijft, gebruik dan altijd hoofdletters voor SQL trefwoorden en kleine letters voor tabel- en kolomnamen. Dit maakt je code leesbaarder en minder gevoelig voor fouten.

Dus, in plaats van dit:

select * from information_schema.tables where table_name like 'wp_%';

Doe je dit:

SELECT * FROM information_schema.tables WHERE table_name LIKE 'wp_%';

Vermijd het gebruik van SELECT *

Vermijd het gebruik van SELECT * in je SQL query’s. Je verzoek is onduidelijk omdat je niet altijd kunt weten wat het zal opleveren. Specificeer in plaats daarvan de kolommen die je uit de tabel wilt selecteren.

Dus in plaats van dit:

SELECT * EXCEPT(phone) FROM users.profile

Doe je dit:

SELECT name,
    dob,
    address,
    country,
    address,
FROM user.profile

Laat je code inspringen

Tot slot nog een tip om het vinden van fouten gemakkelijker te maken is het inspringen van je code. Dat maakt het leesbaarder!

Databasebeheerders

Je kunt er ook voor kiezen om je databases te beheren zonder SQL te schrijven door middel van een databasebeheerders. Dit geeft gebruikers toegang tot databasebeheerfuncties zonder SQL query’s te hoeven schrijven. Deze software maakt verbinding met een MySQL server en biedt een gebruikersinterface om de databasefuncties toegankelijk te maken. Eenmaal verbonden toont de UI alle databases op de server. Het uiterlijk verschilt per beheertool, maar het proces is vergelijkbaar.

DevKinsta's databasebeheerder.
DevKinsta’s databasebeheerder.

Je kunt kiezen uit verschillende tools, waaronder phpMyAdmin en Adminer, die beide toegankelijk zijn via DevKinsta. De standaard beheertool voor DevKinsta is Adminer, omdat het lichtgewicht, gemakkelijk en snel is, maar ook phpMyAdmin is gemakkelijk en toegankelijk.

Samenvatting

Als serverbeheerder moet je efficiënt en nauwkeurig details kunnen opvragen over de databases op je MySQL server. De mogelijkheid om te zien welke databases er op de server staan, om specifieke tabellen en de informatie daarin te bekijken, en om informatie over gebruikersrollen en -rechten op te vragen zijn allemaal cruciale taken. Gelukkig kan het gebruik van SQL vanaf de commandoregel dit allemaal heel eenvoudig maken.

Wanneer je databasebeheer verder moet gaan dan het opvragen van tabellen, kan Kinsta helpen. Kom vandaag nog meer te weten over onze schaalbare Database Hosting opties!

Salman Ravoof

Salman Ravoof is een autodidactische webdeveloper, schrijver, creator en een groot bewonderaar van Free and Open Source Software (FOSS). Naast techniek is hij enthousiast over wetenschap, filosofie, fotografie, kunst, katten en eten. Lees meer over hem op zijn website en kom in contact met Salman op X.