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?


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]

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"

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

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;

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


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.


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


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

Enter password:******

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
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.