2010-01-12 20 views
69

Uso i piloni e sqlalchemy. Aggiorno costantemente i file dello schema ed elimini e ricreamo il database in modo da poter creare un nuovo schema.Come eliminare il database mysql tramite il comando shell

Ogni volta che faccio questo aprendo MySQL Query Browser ed effettuare il login ed eliminare il database/schema.

Come si eliminano i comandi MySQL db/schema MySQL completi in Ubuntu Linux?

+0

Questo funziona su qualsiasi sistema operativo non solo linux – astroanu

risposta

120
mysqladmin -u[username] -p[password] drop [database] 
+11

grazie Alex. Ho aggiunto -f per forzare l'eliminazione –

+5

La tua password sarà accessibile a qualsiasi altro utente sul sistema. 'ps aux'. Considera invece l'uso di un file '.my.cnf'. – gahooa

+0

Sono novizio per lo scripting di shell, ma per quelli di voi che hanno trovato questo alla ricerca di un metodo per eliminare e creare db all'interno del proprio script, questo metodo ha funzionato per me. – kyle

13

Un altro modo adeguato:

$ mysql -u you -p 
<enter password> 

>>> DROP DATABASE foo; 
+0

Questo è praticamente lo stesso di quello che sta facendo. –

+4

Illustrare le possibilità sulla linea di comando non garantisce un voto negativo. Stava usando MySql Query Browser. Non proprio la stessa cosa. – gahooa

+0

Ma la dichiarazione del problema afferma chiaramente che vuole un "comando shell". – iankit

22

Se siete stanchi di digitare la password, creare un (chmod 600) il file ~/.my.cnf, e mettere in esso:

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

Per il bene della conversazione:

echo 'DROP DATABASE foo;' | mysql 
+2

sebbene sia un ambiente di sviluppo, non mi preoccupo molto della password visibile agli altri. Mi piace molto la tua idea .my.cnf. +1 sull'idea –

+1

Per lo script automatico, la seconda parte della risposta è la migliore. Grazie mille. –

+0

wow, grazie per questo, non sapevo che funzionasse :) –

24

In generale, è possibile passare qualsiasi query a mysql dalla shell con l'opzione -e.

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

La tua password sarà accessibile a qualsiasi altro utente sul sistema. 'ps aux'. Considera invece l'uso di un file '.my.cnf'. – gahooa

+3

O forse solo prendere nota che questo è solo per il tuo ambiente di sviluppo locale dove sei l'unico utente. –

+2

Il flag -D non è necessario per DROP un database. Dovrebbe essere sufficiente con: 'mysql -uuser -ppass -e" DROP DATABASE dbname "' – dani24

7

Non c'è bisogno di mysqladmin:

basta usare riga di comando mysql

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

Questo invierà il comando DROP anche se non vorrei passare la password in questo modo in quanto sarà esposto ad altri utenti del sistema tramite ps aux

0
[[email protected]]# mysqladmin -u root -p drop [DB] 

Enter password:****** 
+0

Non penso che questo esponga la password ad altri utenti sul server, come fanno molte altre risposte; invece viene chiesto all'utente dopo che l'utente ha premuto invio. Forse le persone non hanno capito questo quando hanno downvoted quelle che sono probabilmente le migliori due risposte! –

2

MySQL ha interrotto il comando drop database dalla shell client mysql. È necessario utilizzare mysqladmin per eliminare un database.

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). – Skynet

+0

Non risponde direttamente alla domanda poiché la domanda è troppo vaga. – Ilija

1

È possibile rimuovere del database direttamente come:

$ mysqladmin -h [host] -u [utente] -p cadere [database_name]

[Enter Password]

Vuoi davvero eliminare il database "senza capelli" [y/N]: y

Problemi correlati