Cómo eliminar la base de datos mysql a través del comando shell


80

Yo uso los pilones y sqlalchemy. Actualizo constantemente los archivos de esquema y elimino y vuelvo a crear la base de datos para poder crear un nuevo esquema.

Cada vez que hago esto, abro el navegador de consultas MySql e inicie sesión y elimine la base de datos / esquema.

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


Esto funciona en cualquier sistema operativo, no solo en Linux
— astroanu

Respuestas:


140

Prueba el siguiente comando:

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

7
Su contraseña será accesible para cualquier otro usuario del sistema. ps aux. Considere usar un .my.cnfen su lugar.
— Gahooa,

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

Si quieres ver por ti mismo sin iniciar sesión si de hecho tu base de datos está impresionado, me imagino mysqlshow -u [username] -p[Password]. Incluso puede hacer grep para la base de datos mysqlshow -u [username] -p[password] | grep [database].
— xpros

¿Sin espacios entre -u y nombre de usuario seguro?
— AmazingTurtle

¿Hay alguna forma de eliminar todas las bases de datos con un solo comando en lugar de escribir el comando para cada base de datos?
— Aitazaz Khan

37

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

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

5
Su contraseña será accesible para cualquier otro usuario del sistema. ps aux. Considere usar un .my.cnfen su lugar.
— Gahooa,

3
O tal vez solo tenga en cuenta que esto es solo para su entorno de desarrollo local donde usted es el único usuario.
— Elijah Lynn

4
La bandera -D no es necesaria para DROP una base de datos. Debería ser suficiente con:mysql -uuser -ppass -e "DROP DATABASE dbname"
— dani24

26

Si está cansado de escribir su contraseña, cree un archivo (chmod 600) ~/.my.cnfe introdúzcalo:

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

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 .my.cnf. +1 en la idea

1
Para el guión automático, la segunda parte de la respuesta es la mejor. Muchas gracias.
— dasm

13

Otra forma adecuada:

$ mysql -u you -p
<enter password>

>>> DROP DATABASE foo;

Eso es básicamente lo mismo que ha estado haciendo.
— Scottie T

4
Ilustrar las posibilidades en la línea de comando no justifica un voto negativo. Estaba usando MySql Query Browser. No es exactamente lo mismo.
— Gahooa,

Pero la declaración del problema establece claramente que quiere un "comando de shell".
— iankit

10

No es necesario mysqladmin:

solo usa la línea de comando mysql

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

Esto enviará el comando de caída aunque no pasaría la contraseña de esta manera, ya que estará expuesta a otros usuarios del sistema a través de ps aux.


1

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


Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración a un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga suficiente reputación , podrá comentar cualquier publicación .
— Skynet

No responde a la pregunta directamente porque es demasiado vaga.
— Ilija

1

Puede eliminar la base de datos directamente como:

$ mysqladmin -h [host] -u [usuario] -p drop [nombre_base_datos]

[Introducir la contraseña]

¿Realmente desea eliminar la base de datos "hairfree" [y / N]: y


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

Enter password:******

No creo que esto exponga la contraseña a otros usuarios en el servidor, como hacen muchas de las otras respuestas; en su lugar, se le solicita al usuario después de que el usuario presione enter. ¡Posiblemente la gente no se haya dado cuenta de esto cuando votó en contra de las dos posibles respuestas!
— Altamente irregular
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.