Die Verwendung des INFORMATION_SCHEMA
o show databases
ist nicht zuverlässig, wenn Sie nicht über ausreichende Rechte verfügen, um die Datenbank einzusehen. Es wird den Anschein erwecken, dass die DB nicht existiert, obwohl Sie keinen Zugriff auf sie haben. Die Erstellung würde dann anschließend fehlschlagen. Eine andere Möglichkeit, eine präzisere Prüfung durchzuführen, ist die Verwendung der Ausgabe des use-Befehls, obwohl ich nicht weiß, wie zuverlässig dieser Ansatz ist (die Textausgabe ändert sich in zukünftigen Versionen / anderen Sprachen...), also sei gewarnt.
CHECK=$(mysql -sNe "use DB_NAME" 2>&1)
if [ $? -eq 0 ]; then
# database exists and is accessible
elif [ ! -z "$(echo $CHECK | grep 'Unknown database')" ]; then
# database does not exist
elif [ ! -z "$(echo $CHECK | grep 'Access denied')" ]; then
# cannot tell if database exists (not enough permissions)"
else
# unexpected output
fi