À partir d'un script shell, comment puis-je vérifier s'il existe une base de données MySQL?


23

mysqladmin -uroot create foorenvoie un état de sortie de 1 s'il fooexiste et de 0 sinon, mais bien sûr, il créera également la base de données si elle n'existe pas déjà. Existe-t-il un moyen simple de vérifier simplement si une base de données existe?

Réponses:


43

Je me rends compte que cela a été répondu il y a longtemps, mais il me semble beaucoup plus propre de le faire:

mysql -u root -e 'use mydbname'

Si la base de données existe, cela ne produira aucune sortie et quittera avec returncode == 0.

Si la base de données n'existe pas , cela produira un message d'erreur sur stderr et quittera avec returncode == 1. Vous feriez donc quelque chose comme ceci:

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

Cela fonctionne bien avec les scripts shell, ne nécessite aucun traitement de la sortie et ne dépend pas de l'accès au système de fichiers local.


1
Pour quiconque souhaite supprimer le message d'erreur, essayez ceci (bien sûr, pensez à retirer votre mot de passe pour des raisons de sécurité): si! mysql -u <utilisateur> -p <pw> -e 'utilise <nom de la base de données>' 2> / dev / null; alors mysql -u <utilisateur> -p <pw> -e 'CREATE DATABASE <nom de la base de données>;'; fi
Peter Mark


7

Les bases de données dans MySQL sont des dossiers dans le système de fichiers. Cela facilite grandement la recherche d'une base de données:

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

Dans ce cas, /var/libest le datadir de MySQL. Ce qu'il y a de bien avec cet extrait, c'est qu'il n'aura pas besoin d'un démon MySQL en cours d'exécution, pas plus qu'il n'aura besoin d'informations d'identification. Bien sûr, l'utilisateur exécutant la commande doit être autorisé à descendre dans ce répertoire.



2

Un peu hacky, mais cela affichera 1 si foo n'existe pas, 0 sinon:

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

2

Je pense que vous pouvez vérifier si votre base de données nécessaire fonctionne de manière simple dans n'importe quel shell

mysql -uUSERNAME -pPASSWORD DATABASE -e exit

puis vérifiez le $?code de sortie

Cette commande essaie vos informations d'identification spécifiques (NOM D'UTILISATEUR et MOT DE PASSE) pour se connecter à la BASE DE DONNÉES sélectionnée et exitimmédiatement. Donc, si la connexion est correcte, le code de sortie sera 0 et différent de zéro sinon.

Bien sûr, vous pouvez rediriger n'importe quelle sortie /dev/nullsi nécessaire

PS. Cette méthode est très utile pour vérifier la santé des stockages éphémères qui sont si rapides et populaires de nos jours. Si la base de données ne peut pas être connectée, vous devez démarrer la restauration dès que possible.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.