Je donne +1 à la réponse de @chown, mais voici une autre alternative :si le script bash s'exécute localement avec l'instance MySQL et que vous connaissez le chemin vers le répertoire de données, vous pouvez tester :
if [ -d /var/lib/mysql/databasename ] ; then
# Do Stuff ...
fi
Cela suppose également que votre utilisateur shell exécutant le script dispose de privilèges au niveau du système de fichiers pour lire le contenu du répertoire de données MySQL. C'est souvent le cas, mais ce n'est pas certain.
mysqlshow "test" > /dev/null 2>&1 && echo "Database exists."
Selon l'état de sortie de la commande mysqlshow, elle exécutera l'écho suivant.
Exemple de script (Merci à Bill Karwin pour le --user
et --password
commentaire !):
#!/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
Voici à quoi ressemblent les commandes lorsqu'elles sont exécutées à l'invite :
[[email protected] ~]# mysqlshow myDatabase
Wildcard: myDatabase
+------------------+
| Databases |
+------------------+
| myDatabase |
+------------------+
Si aucune base de données n'existe, la sortie ressemblera à ceci :
[[email protected] ~]# mysqlshow myDatabase
Wildcard: myDatabase
+-----------+
| Databases |
+-----------+
+-----------+
Ensuite, analysez la sortie et faites ce que vous devez savoir si elle existe ou non !