Check if mysql database exists, perform action based on result Check if mysql database exists, perform action based on result bash bash

Check if mysql database exists, perform action based on result


I give +1 to answer by @chown, but here's another alternative: If the bash script is running locally with the MySQL instance, and you know the path to the datadir, you can test:

if [ -d /var/lib/mysql/databasename ] ; then     # Do Stuff ...fi

This also assumes your shell user running the script has filesystem-level privileges to read the contents of the MySQL datadir. This is often the case, but it is not certain.


Example script (Thanks to Bill Karwin for the --user and --password comment!):

#!/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 @billkarwinRESULT=`mysqlshow --user=XXXXXX --password=XXXXXX myDatabase| grep -v Wildcard | grep -o myDatabase`if [ "$RESULT" == "myDatabase" ]; then    echo YESfi

These are what the commands look like when run at a prompt:

[root@host ~]# mysqlshow myDatabaseWildcard: myDatabase+------------------+|    Databases     |+------------------+| myDatabase       |+------------------+

If no DB exists, the output will look like this:

[root@host ~]# mysqlshow myDatabaseWildcard: myDatabase+-----------+| Databases |+-----------++-----------+

Then, parse the output and do what you need to based on if it exists or not!


mysqlshow "test" > /dev/null 2>&1 && echo "Database exists."

Depending on the exit status of the mysqlshow command, it will execute the following echo.