criar banco de dados mysql com uma linha no bash

24

É possível criar um banco de dados vazio com uma linha de comando no bash?

Minhas tentativas para iniciantes falharam:

mysql -uroot $(create database mydatabase;)

Acabo tendo que

  • mysql -uroot
  • create database mydatabase;
  • exit;
chrisjlee
fonte

Respostas:

32

A resposta do @ Nitrodist funcionará, mas está sobrecarregando o problema. O cliente de linha de comando do MySQL suporta a opção muito útil -e, da seguinte maneira:

mysql -uroot -e "create database 'foo'"

É claro que você pode substituir qualquer SQL válido por lá.

Kromey
fonte
desculpe, editei minha resposta depois de mais algumas pesquisas.
Nitrodist
5
As aspas não são necessáriasmysql -uroot -e "create database foo"
IanVaughan
1
Sim, usar aspas simples adicionais me deu um ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''foo'' at line 1. Sem eles, funciona bem. Obrigado @IanVaughan
leymannx
14

De acordo com a documentação do MySQL, o mysqlpode receber comandos destdin

shell> mysql -uroot < script.sql > output.tab

Você pode usar a Substituição de Processo para fazer isso:

shell> mysql -uroot <(echo "create database mydatabase;") 

Ou você pode simplesmente canalizá-lo para o stdinde mysqlnormalmente:

shell> echo "create database mydatabase;" | mysql -uroot

Não posso testar isso pessoalmente, mas acho que isso deve funcionar.

Editar: Outra opção é usar a -eopção especificada aqui , da seguinte forma:

shell> mysql -uroot -e "create database mydatabase;"
Nitrodista
fonte