Jak usunąć bazę danych mysql za pomocą polecenia powłoki


80

Używam pylonów i sqlalchemy. Stale aktualizuję pliki schematów oraz usuwam i odtwarzam bazę danych, aby można było stworzyć nowy schemat.

Za każdym razem robię to, otwierając MySql Query Browser, logując się i usuwając bazę danych / schemat.

Jak usunąć dokładne polecenia powłoki bazy danych / schematu MySQL w systemie Linux w systemie Ubuntu Linux?


Działa to na każdym systemie operacyjnym, nie tylko na Linuksie
astroanu

Odpowiedzi:


140

Wypróbuj następujące polecenie:

mysqladmin -h[hostname/localhost] -u[username] -p[password] drop [database]

7
Twoje hasło będzie dostępne dla każdego innego użytkownika w systemie. ps aux. Rozważ użycie .my.cnfzamiast tego.
gahooa,

Jestem nowicjuszem w skryptach powłoki, ale dla tych z Was, którzy znaleźli to, szukając metody na upuszczenie i utworzenie bazy danych z wnętrza skryptu, ta metoda zadziałała.
kyle

jeśli chcesz samemu się przekonać bez logowania, czy rzeczywiście twoja baza danych została zniszczona, mam ochotę mysqlshow -u [username] -p[Password]. Możesz nawet grep dla bazy danych mysqlshow -u [username] -p[password] | grep [database].
xpros

Na pewno bez spacji między -u a nazwą użytkownika?
AmazingTurtle

Czy istnieje sposób na usunięcie wszystkich baz danych za pomocą jednego polecenia zamiast zapisywania polecenia dla każdej bazy danych?
Aitazaz Khan

37

Ogólnie rzecz biorąc, możesz przekazać dowolne zapytanie mysqlz powłoki za pomocą opcji -e.

mysql -u username -p -D dbname -e "DROP DATABASE dbname"

5
Twoje hasło będzie dostępne dla każdego innego użytkownika w systemie. ps aux. Rozważ użycie .my.cnfzamiast tego.
gahooa

3
A może po prostu zanotuj, że dotyczy to tylko lokalnego środowiska programistycznego, w którym jesteś jedynym użytkownikiem.
Elijah Lynn

4
Flaga -D nie jest potrzebna do upuszczenia bazy danych. Powinno wystarczyć z:mysql -uuser -ppass -e "DROP DATABASE dbname"
dani24

26

Jeśli jesteś zmęczony wpisywaniem hasła, utwórz plik (chmod 600) ~/.my.cnfi umieść w nim:

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

Ze względu na rozmowę:

echo 'DROP DATABASE foo;' | mysql

2
chociaż jest to środowisko programistyczne, naprawdę nie martwiłem się zbytnio o hasło widoczne dla innych. Bardzo podoba mi się Twój pomysł .my.cnf. +1 do pomysłu

1
W przypadku skryptu automatycznego druga część odpowiedzi jest najlepsza. Wielkie dzięki.
dasm

13

Inny odpowiedni sposób:

$ mysql -u you -p
<enter password>

>>> DROP DATABASE foo;

To w zasadzie to samo, co on robił.
Scottie T,

4
Zilustrowanie możliwości w wierszu poleceń nie gwarantuje odrzucenia głosu. Używał przeglądarki zapytań MySql. Nie do końca to samo.
gahooa

Ale stwierdzenie problemu jasno stwierdza, że ​​chce on „polecenia powłoki”.
iankit

10

Nie ma potrzeby mysqladmin:

po prostu użyj linii poleceń mysql

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

Spowoduje to wysłanie polecenia drop, chociaż nie podałbym hasła w ten sposób, ponieważ zostanie ono ujawnione innym użytkownikom systemu przez ps aux


1

MySQL wycofał polecenie usuwania bazy danych z powłoki klienta mysql. Aby usunąć bazę danych, musisz użyć mysqladmin.


To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem - zawsze możesz komentować własne posty, a gdy zdobędziesz wystarczającą reputację , będziesz mógł skomentować każdy post .
Skynet

Nie odpowiada bezpośrednio na pytanie, ponieważ pytanie jest zbyt niejasne.
Ilija

1

Możesz usunąć bazę danych bezpośrednio jako:

$ mysqladmin -h [host] -u [użytkownik] -p drop [ nazwa_bazy_danych ]

[Wprowadź hasło]

Czy naprawdę chcesz porzucić bazę danych „bez włosów” [t / N]: y


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

Enter password:******

Nie sądzę, aby to ujawniło hasło innym użytkownikom serwera, jak robi to wiele innych odpowiedzi; zamiast tego użytkownik jest proszony o to po wejściu użytkownika. Prawdopodobnie ludzie nie zdawali sobie z tego sprawy, kiedy zanegowali prawdopodobnie dwie najlepsze odpowiedzi!
Bardzo nieregularne
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.