Ich gebe +1, um von @chown zu antworten, aber hier ist eine andere Alternative:Wenn das Bash-Skript lokal mit der MySQL-Instanz ausgeführt wird und Sie den Pfad zum Datenverzeichnis kennen, können Sie Folgendes testen:
if [ -d /var/lib/mysql/databasename ] ; then
# Do Stuff ...
fi
Dies setzt auch voraus, dass Ihr Shell-Benutzer, der das Skript ausführt, über Berechtigungen auf Dateisystemebene verfügt, um den Inhalt des MySQL-Datenverzeichnisses zu lesen. Dies ist oft der Fall, aber es ist nicht sicher.
mysqlshow "test" > /dev/null 2>&1 && echo "Database exists."
Abhängig vom Exit-Status des mysqlshow-Befehls wird das folgende Echo ausgeführt.
Beispielskript (Dank an Bill Karwin für den --user
und --password
kommentieren!):
#!/bin/bash
## --user=XXXXXX --password=XXXXXX *may* not be necessary if run as root or you have unsecured DBs but
## using them makes this script a lot more portable. Thanks @billkarwin
RESULT=`mysqlshow --user=XXXXXX --password=XXXXXX myDatabase| grep -v Wildcard | grep -o myDatabase`
if [ "$RESULT" == "myDatabase" ]; then
echo YES
fi
So sehen die Befehle aus, wenn sie an einer Eingabeaufforderung ausgeführt werden:
[[email protected] ~]# mysqlshow myDatabase
Wildcard: myDatabase
+------------------+
| Databases |
+------------------+
| myDatabase |
+------------------+
Wenn kein DB vorhanden ist, sieht die Ausgabe so aus:
[[email protected] ~]# mysqlshow myDatabase
Wildcard: myDatabase
+-----------+
| Databases |
+-----------+
+-----------+
Analysieren Sie dann die Ausgabe und tun Sie, was Sie tun müssen, je nachdem, ob sie vorhanden ist oder nicht!