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?

Eric Leschinski
źródło
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]
Alex Reisner
źródło
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"
Yada
źródło
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
gahooa
źródło
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;
gahooa
źródło
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

inżynier Dave
źródło
1

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

Ilija
źródło
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

Bhautik Nada
źródło
0
[root@host]# mysqladmin -u root -p drop [DB]

Enter password:******
iyad
źródło
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