utwórz bazę danych mysql z jednym wierszem w bash

24

Czy można utworzyć pustą bazę danych z jednym wierszem poleceń w bash?

Moje próby dla początkujących nie powiodły się:

mysql -uroot $(create database mydatabase;)

W końcu muszę

  • mysql -uroot
  • create database mydatabase;
  • exit;
chrisjlee
źródło

Odpowiedzi:

32

@ Odpowiedź Nitrodist zadziała, ale problem jest nadmiernie zaprojektowany. Klient wiersza poleceń MySQL obsługuje bardzo przydatny -eprzełącznik, taki jak:

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

Możesz oczywiście zastąpić tam dowolny poprawny kod SQL.

Kromey
źródło
przepraszam, zredagowałem swoją odpowiedź po dalszych badaniach.
Nitrodist,
5
Cytaty nie są wymaganemysql -uroot -e "create database foo"
IanVaughan,
1
Tak, użycie dodatkowych pojedynczych cytatów dało mi 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. Bez nich działa dobrze. Dzięki @IanVaughan
leymannx
14

Zgodnie z dokumentacją MySQL, mysqlmożna pobierać polecenia zstdin

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

Aby to zrobić, możesz użyć procesu podstawienia :

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

lub można po prostu go do rury stdinz mysqlnormalnie:

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

Nie mogę przetestować tego osobiście, ale myślę, że to powinno zadziałać.

Edycja: Inną opcją jest użycie -eokreślonej tutaj opcji, tak jak poniżej :

shell> mysql -uroot -e "create database mydatabase;"
Nitrodist
źródło