créer une base de données mysql avec une ligne en bash

24

Est-il possible de créer une base de données vide avec une ligne de commande en bash?

Mes tentatives de débutant ont échoué:

mysql -uroot $(create database mydatabase;)

Je finis par devoir

  • mysql -uroot
  • create database mydatabase;
  • exit;
chrisjlee
la source

Réponses:

32

@ La réponse de Nitrodist fonctionnera, mais c'est une ingénierie excessive du problème. Le client en ligne de commande de MySQL prend en charge le -ecommutateur très pratique , comme ceci:

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

Vous pouvez bien sûr y substituer n'importe quel SQL valide.

Kromey
la source
désolé d'avoir modifié ma réponse après quelques recherches supplémentaires.
Nitrodist
5
Les devis ne sont pas requismysql -uroot -e "create database foo"
IanVaughan
1
Oui, l'utilisation de guillemets supplémentaires m'a donné 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. Sans eux, cela fonctionne bien. Merci @IanVaughan
leymannx
14

Selon la documentation de MySQL, le mysqlpeut recevoir des commandes destdin

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

Vous pouvez utiliser la substitution de processus pour accomplir ceci:

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

ou vous pouvez juste conduite à la stdinde mysqlnormalement:

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

Je ne peux pas tester cela personnellement, mais je pense que cela devrait fonctionner.

Edit: Une autre option consiste à utiliser l' -eoption, spécifiée ici , comme ceci:

shell> mysql -uroot -e "create database mydatabase;"
Nitrodist
la source