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.