So löschen Sie die MySQL-Datenbank mit dem Shell-Befehl

80

Ich benutze die Pylone und die Sqlalchemie. Ich aktualisiere ständig die Schemadateien und lösche und erstelle die Datenbank neu, damit ein neues Schema erstellt werden kann.

Jedes Mal, wenn ich dies tue, öffne ich den MySql Query Browser und melde mich an und lösche die Datenbank / das Schema.

Wie lösche ich die MySQL db / schema gründlichen Linux-Shell-Befehle in Ubuntu Linux?

Eric Leschinski
quelle
Dies funktioniert unter jedem Betriebssystem, nicht nur unter Linux
Astroanu

Antworten:

138

Versuchen Sie den folgenden Befehl:

mysqladmin -h[hostname/localhost] -u[username] -p[password] drop [database]
Alex Reisner
quelle
7
Ihr Passwort ist für jeden anderen Benutzer im System zugänglich. ps aux. Verwenden Sie .my.cnfstattdessen ein.
Gahooa
Ich bin ein Neuling in der Shell-Skripterstellung, aber für diejenigen unter Ihnen, die dies als Suche nach einer Methode zum Löschen und Erstellen von DBs aus Ihrem Skript heraus fanden, hat diese Methode für mich funktioniert.
Kyle
Wenn Sie sich selbst davon überzeugen möchten, ohne sich anzumelden, ob Ihre Datenbank tatsächlich weggeblasen ist, denke ich mysqlshow -u [username] -p[Password]. Sie können sogar nach der Datenbank suchen mysqlshow -u [username] -p[password] | grep [database].
xpros
Sicher ohne Leerzeichen zwischen -u und Benutzername?
AmazingTurtle
Gibt es eine Möglichkeit, alle Datenbanken mit einem einzigen Befehl zu löschen, anstatt den Befehl für jede Datenbank aufzuschreiben?
Aitazaz Khan
36

Im Allgemeinen können Sie jede Abfrage mysqlvon der Shell mit der Option -e übergeben.

mysql -u username -p -D dbname -e "DROP DATABASE dbname"
Yada
quelle
5
Ihr Passwort ist für jeden anderen Benutzer im System zugänglich. ps aux. Verwenden Sie .my.cnfstattdessen ein.
Gahooa
3
Oder notieren Sie sich einfach, dass dies nur für Ihre lokale Entwicklungsumgebung gilt, in der Sie der einzige Benutzer sind.
Elijah Lynn
3
Das Flag -D wird nicht benötigt, um eine Datenbank zu DROPEN. Es sollte genug sein mit:mysql -uuser -ppass -e "DROP DATABASE dbname"
dani24
26

Wenn Sie es leid sind, Ihr Passwort einzugeben, erstellen Sie eine (chmod 600) -Datei ~/.my.cnfund fügen Sie sie ein:

[client]
user = "you"
password = "your-password"

Zum Zwecke der Unterhaltung:

echo 'DROP DATABASE foo;' | mysql
gahooa
quelle
2
Obwohl es sich um eine Entwicklungsumgebung handelt, mache ich mir wirklich keine großen Sorgen um das Passwort, das für andere sichtbar ist. Ich mag deine .my.cnf Idee sehr. +1 auf die Idee
1
Für das automatische Skript ist der zweite Teil der Antwort der beste. Vielen Dank.
Dasm
13

Ein anderer geeigneter Weg:

$ mysql -u you -p
<enter password>

>>> DROP DATABASE foo;
gahooa
quelle
Das ist im Grunde das gleiche wie das, was er getan hat.
Scottie T
4
Die Darstellung der Möglichkeiten in der Befehlszeile rechtfertigt keine Ablehnung. Er benutzte den MySql Query Browser. Nicht ganz das Gleiche.
Gahooa
Aber die Problemstellung besagt eindeutig, dass er einen "Shell-Befehl" will.
Iankit
10

Keine Notwendigkeit für mysqladmin:

Verwenden Sie einfach die MySQL-Befehlszeile

mysql -u [username] -p[password] -e 'drop database db-name;'

Dadurch wird der Befehl drop gesendet, obwohl ich das Kennwort nicht auf diese Weise übergeben würde, da es über ps aux anderen Benutzern des Systems zugänglich gemacht wird

IngenieurDave
quelle
1

MySQL hat den Befehl zum Löschen der Datenbank in der MySQL-Client-Shell eingestellt. Müssen Sie mysqladmin verwenden, um eine Datenbank zu löschen.

Ilija
quelle
Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Sobald Sie einen ausreichenden Ruf haben, können Sie jeden Beitrag kommentieren .
Skynet
Die Frage wird nicht direkt beantwortet, da die Frage zu vage ist.
Ilija
1

Sie können die Datenbank direkt entfernen als:

$ mysqladmin -h [Host] -u [Benutzer] -p drop [Datenbankname]

[Passwort eingeben]

Haben Sie fallen wirklich wollen , um die ‚hairfree‘ Datenbank [y / N]: y

Bhautik Nada
quelle
0
[root@host]# mysqladmin -u root -p drop [DB]

Enter password:******
iyad
quelle
Ich glaube nicht, dass dies das Passwort anderen Benutzern auf dem Server zugänglich macht, wie es viele andere Antworten tun. Stattdessen wird der Benutzer danach gefragt, nachdem der Benutzer die Eingabetaste gedrückt hat. Möglicherweise haben die Leute dies nicht bemerkt, als sie die möglicherweise besten zwei Antworten abgelehnt haben!
Sehr unregelmäßig