Me doy cuenta de que esto fue respondido hace mucho tiempo, pero me parece mucho más limpio hacer esto:
mysql -u root -e 'use mydbname'
Si la base de datos existe, esto no producirá salida y saldrá con returncode == 0.
Si la base de datos no existe, esto generará un mensaje de error en stderr y saldrá con returncode == 1. Entonces haría algo como esto:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Esto funciona bien con los scripts de shell, no requiere ningún procesamiento de la salida y no depende de tener acceso al sistema de archivos local.
mysql -e "SHOW DATABASES LIKE 'foo'"
debería ayudartehttp://dev.mysql.com/doc/refman/5.1/en/show-databases.html
fuente
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.Las bases de datos en MySQL son carpetas en el sistema de archivos. Eso hace que sea muy fácil encontrar si existe una base de datos:
En este caso,
/var/lib
es el datadir de MySQL. Lo bueno de este fragmento es que no necesitará un demonio MySQL en ejecución, ni tampoco necesita credenciales. Por supuesto, el usuario que ejecuta el comando debe poder descender a ese directorio.fuente
De http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ esto es más parecido a lo que quería:
fuente
Un poco hacky, pero esto imprimirá 1 si foo no existe, 0 de lo contrario:
fuente
Creo que puede verificar si su base de datos necesaria funciona de manera simple en cualquier shell
y luego verifique el
$?
código de salidaEste comando prueba sus credenciales específicas (NOMBRE DE USUARIO y CONTRASEÑA) para conectarse a la BASE DE DATOS seleccionada e
exit
inmediatamente. Entonces, si la conexión está bien, el código de salida será 0 y, de lo contrario, no será cero.Por supuesto, puede redirigir cualquier salida
/dev/null
si es necesarioPD. Este método es muy útil para verificar la salud de los almacenamientos efímeros que son tan rápidos y populares en nuestros días. Si la base de datos no se puede conectar, debe comenzar a restaurar lo antes posible.
fuente