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?

Eric Leschinski
fuente
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]
Alex Reisner
fuente
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"
Yada
fuente
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
gahooa
fuente
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;
gahooa
fuente
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.

ingeniero Dave
fuente
1

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

Ilija
fuente
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

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

Enter password:******
iyad
fuente
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