Wie kann ich anhand eines Shell-Skripts überprüfen, ob eine MySQL-Datenbank vorhanden ist?


22

mysqladmin -uroot create fooGibt einen Exit-Status von 1 zurück, falls foovorhanden, und 0, falls noch nicht vorhanden, wird natürlich auch die Datenbank erstellt. Gibt es eine einfache Möglichkeit, einfach zu überprüfen, ob eine Datenbank vorhanden ist?

Antworten:


42

Mir ist klar, dass dies vor langer Zeit beantwortet wurde, aber es scheint mir viel sauberer zu sein, dies zu tun:

mysql -u root -e 'use mydbname'

Wenn die Datenbank vorhanden ist, wird keine Ausgabe erstellt und mit dem Rückkehrcode == 0 beendet.

Wenn die Datenbank nicht existiert, wird dies eine Fehlermeldung auf stderr erzeugen und mit returncode == 1 beendet. Also würden Sie so etwas tun:

if ! mysql -u root -e 'use mydbname'; then
  ...do stuff to create database...
fi

Dies funktioniert gut mit Shell-Skripten, erfordert keine Verarbeitung der Ausgabe und ist nicht auf den Zugriff auf das lokale Dateisystem angewiesen.


1
Wenn Sie die Fehlermeldung unterdrücken möchten, versuchen Sie Folgendes (natürlich sollten Sie Ihr Passwort aus Sicherheitsgründen herausnehmen): if! mysql -u <benutzer> -p <pw> -e 'benutze <db name>' 2> / dev / null; dann mysql -u <user> -p <pw> -e 'CREATE DATABASE <Datenbankname>;'; fi
Peter Mark


7

Datenbanken in MySQL sind Ordner im Dateisystem. Das macht es verdammt einfach herauszufinden, ob eine Datenbank existiert:

test -d "/var/lib/mysql/databasename"

In diesem Fall /var/libist der Datadir von MySQL. Das Schöne an diesem Snippet ist, dass kein MySQL-Daemon ausgeführt werden muss und keine Anmeldeinformationen erforderlich sind. Natürlich muss der Benutzer, der den Befehl ausführt, berechtigt sein, in dieses Verzeichnis zu gelangen.



2

Ein bisschen hacky, aber das gibt 1 aus, wenn foo nicht existiert, sonst 0:

mysqlshow -u root foo 2>&1 >/dev/null | awk ' { print /Unknown database/ }'

2

Ich denke, Sie können in jeder Shell überprüfen, ob Ihre benötigte Datenbank auf einfache Weise funktioniert

mysql -uUSERNAME -pPASSWORD DATABASE -e exit

und dann $?auf Exit-Code prüfen

Mit diesem Befehl wird versucht, mit Ihren spezifischen Anmeldeinformationen (USERNAME und PASSWORD) exitsofort eine Verbindung zu der ausgewählten DATABASE herzustellen . Wenn die Verbindung in Ordnung ist, ist der Exitcode 0, andernfalls ungleich Null.

Natürlich können Sie jede Ausgabe /dev/nullbei Bedarf umleiten

PS. Diese Methode ist sehr nützlich, um die Gesundheit von kurzlebigen Speichern zu überprüfen, die heutzutage so schnell und beliebt sind. Wenn keine Verbindung zur Datenbank hergestellt werden kann, sollten Sie die Wiederherstellung so schnell wie möglich starten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.