Doy +1 para responder por @chown, pero aquí hay otra alternativa:si el script bash se ejecuta localmente con la instancia de MySQL y conoce la ruta al directorio de datos, puede probar:
if [ -d /var/lib/mysql/databasename ] ; then
# Do Stuff ...
fi
Esto también supone que el usuario de shell que ejecuta el script tiene privilegios de nivel de sistema de archivos para leer el contenido de MySQL datadir. Este suele ser el caso, pero no es seguro.
mysqlshow "test" > /dev/null 2>&1 && echo "Database exists."
Dependiendo del estado de salida del comando mysqlshow, ejecutará el siguiente eco.
Script de ejemplo (Gracias a Bill Karwin por el --user
y --password
¡comenta!):
#!/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
Así es como se ven los comandos cuando se ejecutan en un aviso:
[[email protected] ~]# mysqlshow myDatabase
Wildcard: myDatabase
+------------------+
| Databases |
+------------------+
| myDatabase |
+------------------+
Si no existe una base de datos, la salida se verá así:
[[email protected] ~]# mysqlshow myDatabase
Wildcard: myDatabase
+-----------+
| Databases |
+-----------+
+-----------+
Luego, analice la salida y haga lo que necesite en función de si existe o no.