crea un database mysql con una riga in bash


24

È possibile creare un database vuoto con una riga di comando in bash?

I miei tentativi di principiante sono falliti:

mysql -uroot $(create database mydatabase;)

Alla fine devo

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

Risposte:


32

La risposta di @ Nitrodist funzionerà, ma il problema è eccessivo. Il client da riga di comando di MySQL supporta l'opzione molto utile -e, in questo modo:

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

Ovviamente puoi sostituire qualsiasi SQL valido.


mi spiace di aver modificato la mia risposta dopo qualche altra ricerca.
Nitrodist,

5
Le quotazioni non sono richiestemysql -uroot -e "create database foo"
IanVaughan

1
Sì, usando ulteriori virgolette singole mi ha dato un 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. Senza di loro funziona benissimo. Grazie @IanVaughan
leymannx il

14

Secondo la documentazione di MySQL, mysqlpossono prendere comandi dastdin

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

È possibile utilizzare Sostituzione processo per ottenere questo risultato:

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

oppure puoi semplicemente collegarlo al stdindi mysqlnormalmente:

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

Non posso provarlo personalmente, ma penso che dovrebbe funzionare.

Modifica: un'altra opzione è quella di utilizzare l' -eopzione, qui specificata , in questo modo:

shell> mysql -uroot -e "create database mydatabase;"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.