2010-01-12 10 views
69

Utilizo las torres y sqlalchemy. Constantemente actualizo los archivos de esquema y elimino y vuelvo a crear la base de datos para que se pueda hacer un nuevo esquema.Cómo eliminar la base de datos mysql a través del comando de shell

Cada vez que hago esto abriendo el Buscador de consultas MySql, inicio de sesión y elimino la base de datos/esquema.

¿Cómo elimino los comandos MySQL db/schema thorough linux shell en Ubuntu Linux?

+0

Esto funciona en cualquier sistema operativo no solo en linux – astroanu

Respuesta

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

gracias Alex. Agregué -f para forzar la eliminación –

+5

Su contraseña estará accesible para cualquier otro usuario en el sistema. 'ps aux'. Considera usar un '.my.cnf' en su lugar. – gahooa

+0

Soy novato de las secuencias de comandos shell, pero para aquellos de ustedes que encontraron esto buscando un método para soltar y crear db desde el interior de su script, este método funcionó para mí. – kyle

13

Otra forma adecuada:

$ mysql -u you -p 
<enter password> 

>>> DROP DATABASE foo; 
+0

Eso es básicamente lo mismo que lo que ha estado haciendo. –

+4

La ilustración de las posibilidades en la línea de comando no garantiza un voto negativo. Él estaba usando MySql Query Browser. No es exactamente lo mismo. – gahooa

+0

Pero el enunciado del problema indica claramente que quiere un "comando de shell". – iankit

22

Si usted está cansado de escribir su contraseña, cree un (chmod 600) Archivo ~/.my.cnf, y poner en él:

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

Para por el bien de la conversación:

echo 'DROP DATABASE foo;' | mysql 
+2

aunque es un entorno de desarrollo, realmente no me preocupa mucho la contraseña visible para otros. Me gusta mucho tu idea de .my.cnf. +1 en la idea –

+1

Para el script automático, la segunda parte de la respuesta es la mejor. Muchas gracias. –

+0

wow, gracias por esto, no sabía que esto funciona :) –

24

En general, puede pasar cualquier consulta al mysql desde el shell con la opción -e.

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

Su contraseña estará disponible para cualquier otro usuario en el sistema. 'ps aux'. Considera usar un '.my.cnf' en su lugar. – gahooa

+3

O tal vez solo tenga en cuenta que esto es solo para su entorno de desarrollo local donde es el único usuario. –

+2

El distintivo -D no es necesario para DROP una base de datos. Debería ser suficiente con: 'mysql -uuser -ppass -e" DROP DATABASE nombrebd "' – dani24

7

No hay necesidad de mysqladmin:

sólo tiene que utilizar la línea de comandos mysql

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

Esto enviará el comando caída aunque no pasaría la contraseña de esta manera ya que va a ser expuesto a otros usuarios del sistema a través de AUX ps

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

Enter password:****** 
+0

No creo que esto expone la contraseña a otros usuarios en el servidor, como lo hacen muchas de las otras respuestas; en su lugar, se le solicita al usuario después de que el usuario acceda a ingresar. Posiblemente la gente no se dio cuenta de esto cuando votaron negativamente cuáles son posiblemente las mejores dos respuestas. –

2

MySQL ha descontinuado el comando drop database de mysql client shell. Necesita usar mysqladmin para eliminar una base de datos.

+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). – Skynet

+0

No responde la pregunta directamente ya que la pregunta es demasiado vaga. – Ilija

1

Se puede quitar la base de datos directamente como:

$ mysqladmin -h [host] -u [usuario] -p caer [database]

[Enter Password]

¿De verdad quieres dejar la base de datos 'hairfree' [y/N]: y

Cuestiones relacionadas