Sei que isso foi respondido há muito tempo, mas me parece muito mais limpo fazer isso:
mysql -u root -e 'use mydbname'
Se o banco de dados existir, isso não produzirá saída e sairá com código de retorno == 0.
Se o banco de dados não existir, isso produzirá uma mensagem de erro no 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 de ter acesso local ao sistema de arquivos.
mysql -e "SHOW DATABASES LIKE 'foo'"
deve ajudá-lo.http://dev.mysql.com/doc/refman/5.1/en/show-databases.html
fonte
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.Bancos de dados no MySQL são pastas no sistema de arquivos. Isso facilita muito descobrir se existe um banco de dados:
Nesse caso,
/var/lib
é o datadir do MySQL. O bom desse trecho é que ele não precisará de um daemon MySQL em execução, nem credenciais. Obviamente, o usuário que está executando o comando deve ter permissão para descer para esse diretório.fonte
Em http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/, isso é mais parecido com o que eu queria:
fonte
Um pouco hacky, mas isso imprimirá 1 se foo não existir, 0 caso contrário:
fonte
Eu acho que você pode verificar se o seu banco de dados necessário funciona de maneira simples em qualquer shell
e verifique o
$?
código de saídaEste comando tenta suas credenciais específicas (USERNAME e PASSWORD) para se conectar ao DATABASE selecionado e
exit
imediatamente. Portanto, se a conexão estiver correta, exitcode será 0 e diferente de zero.Obviamente, você pode redirecionar qualquer saída para,
/dev/null
se necessárioPS. Este método é muito útil para verificar a saúde dos depósitos efêmeros que são tão rápidos e populares nos dias de hoje. Se o banco de dados não puder ser conectado, você deverá iniciar a restauração o mais rápido possível.
fonte