MySQL är ett av dagens mest använda relationella databashanteringssystem (RDBMS). Det är en robust databasplattform som gör det möjligt att skapa och hantera skalbara databaser, huvudsakligen med hjälp av ett strukturerat frågespråk (SQL).

MySQL-servern är den miljö där databaserna finns – och där de nås. Som serveradministratör så behöver du ofta hämta information om den här miljön – lista de databaser som finns på servern, visa tabeller från en viss databas, visa användarroller och privilegier, få tillgång till begränsningar och så vidare.

Den här artikeln förklarar hur du listar MySQL-databaser via kommandotolken.

Förutsättningar för att lista MySQL-databaser

MySQL-servern måste vara igång på din lokala maskin för att du ska kunna börja. Om du inte har MySQL så finns det några sätt att installera det:

  • Installera WAMPServer, XAMPP, MAMP eller någon annan programvarudistribuerings-stack som inkluderar MySQL.
  • Ladda ner och kör MySQL-installationsprogrammet direkt från deras officiella webbplats och gå igenom installationsprocessen för att konfigurera och installera MySQL-servern och andra verktyg.

För att bekvämt kunna köra MySQL-kommandon via kommandoraden så måste du lägga till sökvägen för MySQL:s körbara fil i din systemmiljö. Om du har installerat MySQL med alternativ två så är det här steget onödigt, så du kan gärna hoppa över nästa avsnitt.

Lägg till MySQL:s sökväg till systemmiljövariabeln

I det här avsnittet så får du vägledning om hur du lägger till sökvägen för MySQL:s körbara fil till din systemmiljövariabel om du kör XAMPP eller WAMP på en Windows-dator.

Börja med att starta din Windows-filutforskare och navigera till Denna PC. Klicka på den enhet där du har installerat WAMP- eller XAMPP-paketet (C:).

Om du kör XAMPP så navigerar du till xampp > mysql > bin och kopierar den fullständiga sökvägen till bin-mappen. För WAMP så navigerar du via {your-wamp-version} > bin > mysql > {your-mysql-version} > bin till den fullständiga sökvägen.

Den fullständiga sökvägen till mappen bin.
Den fullständiga sökvägen till mappen bin.

Klicka på Start-menyn och sök efter ”path”. Klicka på Redigera systemmiljövariabeln.

Klicka sedan på Miljövariabler under Start och återställning, välj variabeln PATH och klicka på Redigera.

Klicka sedan på Ny och klistra in den fullständiga sökvägen till MySQL-körprogrammet (som du kopierade tidigare).

Redigera miljövariabeln.
Redigera miljövariabeln.

Spara sedan ändringarna genom att klicka på OK.

Nu när sökvägen har lagts till så kan du utföra MySQL-kommandon i terminalen.

Logga in på MySQL

För att lista MySQL-databaser så måste användaren ha behörighet att komma åt alla databaser, eller så måste du ställa in ett globalt SHOW DATABASES-privilegium som ger tillgång till alla användare.

Kontrollera att din MySQL-server är igång innan du loggar in via kommandotolken:

mysql -u  -p

OBS: Ersätt  med ditt användarnamn. Standardanvändarnamnet för MySQL är root, och lösenordet är tomt (det finns som standard inget lösenord).

Logga in på MySQL.
Logga in på MySQL.

Visa databaser inuti MySQL-servern

Nu när du är inloggad så kan du lista de MySQL-databaser som finns på servern genom att köra kommandot SHOW DATABASES:

SHOW DATABASES;

I gengäld så får du alla databaser som finns i arkivet:

En lista över databaser som finns i arkivet.
En lista över databaser som finns i arkivet.

Av de sex databaser som returneras så är information_schema och performance_schema standarddatabaserna som genereras automatiskt när du installerar MySQL.

Databasen information_schema är en icke-modifierbar databas som lagrar all information om databaser och andra objekt (vyer, användarrättigheter, tabeller, begränsningar osv.) som lagras på MySQL-servern.

Filtrering av resultaten från databasutmatningen

Tidigare så returnerade man alla databaser på MySQL-servern med SHOW DATABASES, men man behövde ofta filtrera databasutmatningen, främst när det fanns många databaser på servern.

Med klausulen LIKE så filtreras resultatet av SHOW DATABASE utifrån ett angivet mönster. Här är den allmänna syntaxen:

SHOW DATABASES LIKE '';

Det måste vara en sträng som representerar det mönster som du vill matcha. Strängen måste sluta med procentsymbolen, %, som betecknar ett eller flera tecken.

Om du exempelvis endast vill visa de databaser vars namn börjar på bokstaven w, så uppnår du detta genom att köra följande:

SHOW DATABASES LIKE 'w%';

Här är det filtrerade resultatet:

Det filtrerade databassvaret vid användning av "w%".
Det filtrerade databassvaret vid användning av ”w%”.

Användning av informationsschema för att fråga efter tabellmetadata

Tidigare så kunde du se hur databasen information_schema lagrade all information om databaser, tabeller och andra objekt i MySQL-servermiljön.

Databasen information_schema använder sig av schematabellen för att lagra information om alla databaser. För databasfiltrering så kan du utföra en komplex sökning för att söka i schematabellen efter specifika databaser.

Om du exempelvis vill ha databaser vars namn börjar på antingen ”samp” eller ”word” så kan du kombinera flera andra klausuler för att skapa en komplex sökning:

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

Här är resultatet:

Resultatet av den komplexa frågan.
Resultatet av den komplexa frågan.

Du har dessutom tabellen tables från databasen information_schema, som inkluderar information om alla tabeller. På samma sätt så kan du utföra en förfrågan för att endast hämta de tabeller som matchar ett visst mönster.

Följande fråga returnerar exempelvis schemainformationen endast för WordPress-tabellerna — endast de tabeller vars namn börjar på ”wp_”:

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

Här är resultatet:

Resultatet av schemainformationen endast för WordPress-tabellerna.
Resultatet av schemainformationen endast för WordPress-tabellerna.

Andra tabeller som finns i information_schema är columns, constraints, table_constraints, check_constraints och referential_constraints.

Vanliga problem och bästa praxis

En av de vanligaste orsakerna till fel vid SQL-exekvering är att man inte använder semikolon i slutet av uttalanden.

En annan orsak är att man använder en ogiltig SQL-syntax eller ett felaktigt stavat tabell-/kolumnnamn. För att undvika detta så bör du dubbelkontrollera tabell- eller kolumnnamnet för att se till att det är korrekt stavat. Se även till att dubbelkolla syntaxen.

Här är några andra bra metoder att ha i åtanke.

Använd versaler för SQL-nyckelord

När du skriver SQL-kod så ska du alltid använda versaler för SQL-nyckelord och små bokstäver för tabell- och kolumnnamn. Detta gör din kod mer lättläst och mindre känslig för fel.

Så i stället för det här:

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

Gör så här:

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

Undvik att använda SELECT *

Undvik att använda SELECT * i dina SQL-förfrågningar. Din förfrågan blir otydlig eftersom du inte alltid kan veta vad den kommer att ge tillbaka. Ange i stället de kolumner som du vill välja från tabellen.

Så istället för detta:

SELECT * EXCEPT(phone) FROM users.profile

Gör så här:

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

Dra in din kod

Slutligen så finns det ytterligare ett tips för att göra det lättare att hitta fel: att dra in koden. Det gör den mer lättläst!

Databashanterare

Du kan alternativt välja att hantera dina databaser utan att skriva SQL genom att använda en databashanterare. Detta ger användarna tillgång till funktioner för databashantering utan att det behöver skrivas SQL-förfrågningar. Denna programvara ansluter till en MySQL-server och tillhandahåller ett användargränssnitt för att exponera databasfunktionerna. När den är ansluten så visar användargränssnittet alla databaser på servern. Utseendet och känslan varierar mellan hanteringsverktygen, men processen är likartad.

DevKinsta's databashanterare.
DevKinsta’s databashanterare.

Det finns flera verktyg att välja mellan, bland annat phpMyAdmin och Adminer, som båda finns tillgängliga via DevKinsta. Standardhanteringsverktyget för DevKinsta är Adminer, eftersom det är lättviktigt, enkelt och snabbt, men phpMyAdmin kan nås med lätthet.

Sammanfattning

Som serveradministratör så måste du kunna hämta detaljer om databaserna på din MySQL-server på ett effektivt och korrekt sätt. Förmågorna att se vilka databaser som finns på servern, visa specifika tabeller och informationen från dem samt att få tillgång till information om användarroller och privilegier är viktiga uppgifter. Du kan lyckligtvis använda SQL från din kommandorad för att göra allt detta till en barnlek.

När din databashantering behöver gå djupare än till att bara fråga ut tabeller så kan Kinsta hjälpa dig. Lär dig mer om våra skalbara alternativ för databashosting idag!

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.