Erstellen Sie eine MySQL-Datenbank mit einer Zeile in Bash


24

Ist es möglich, eine leere Datenbank mit einer Befehlszeile in Bash zu erstellen?

Meine Neulingsversuche sind fehlgeschlagen:

mysql -uroot $(create database mydatabase;)

Am Ende muss ich

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

Antworten:


32

@ Nitrodists Antwort wird funktionieren, aber das Problem ist zu hoch. Der Befehlszeilen-Client von MySQL unterstützt den sehr praktischen -eSchalter wie folgt :

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

Sie können dort natürlich jedes gültige SQL ersetzen.


Es tut mir leid, dass ich meine Antwort nach einigen weiteren Nachforschungen bearbeitet habe.
Nitrodist

5
Die Anführungszeichen sind nicht erforderlichmysql -uroot -e "create database foo"
IanVaughan

1
Ja, mit zusätzlichen einfachen Anführungszeichen gab mir eine 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. Ohne sie funktioniert es gut. Thanks @IanVaughan
leymannx

14

Laut MySQL-Dokumentation mysqlkönnen die Befehle von übernehmenstdin

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

Sie können Process Substitution verwenden , um dies zu erreichen:

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

oder Sie können nur eine Pipe an den stdinvon der mysqlRegel:

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

Ich kann das nicht persönlich testen, aber ich denke, das sollte funktionieren.

Bearbeiten: Eine andere Option ist die Verwendung der hier-e angegebenen Option , wie folgt :

shell> mysql -uroot -e "create database mydatabase;"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.