Eu percebi que isso foi respondido há muito tempo, mas parece muito mais limpo para mim fazer isso:
mysql -u root -e 'use mydbname'
Se o banco de dados existir, isso não produzirá saída e sairá com returncode == 0.
Se o banco de dados não existir , isso produzirá uma mensagem de erro em stderr e sairá com returncode == 1. Então você faria algo assim:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Isso funciona bem com scripts de shell, não requer nenhum processamento da saída e não depende do acesso local ao sistema de arquivos.