crear una base de datos mysql con una línea en bash


24

¿Es posible crear una base de datos vacía con una línea de comando en bash?

Mis intentos de novato han fallado:

mysql -uroot $(create database mydatabase;)

Termino teniendo que

  • mysql -uroot
  • create database mydatabase;
  • exit;

Respuestas:


32

La respuesta de @ Nitrodist funcionará, pero está sobregeniando el problema. El cliente de línea de comandos de MySQL admite el -econmutador muy útil , así:

mysql -uroot -e "create database 'foo'"

Por supuesto, puede sustituir cualquier SQL válido allí.


Lo siento, edité mi respuesta después de un poco más de investigación.
Nitrodist

55
Las citas no son obligatoriasmysql -uroot -e "create database foo"
IanVaughan

1
Sí, el uso de comillas simples adicionales me dio un ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''foo'' at line 1. Sin ellos funciona bien. Gracias @IanVaughan
leymannx

14

De acuerdo con la documentación de MySQL, mysqlpuede tomar comandos destdin

shell> mysql -uroot < script.sql > output.tab

Puede usar la sustitución de procesos para lograr esto:

shell> mysql -uroot <(echo "create database mydatabase;") 

o simplemente puede canalizarlo al stdinde mysqlnormalmente:

shell> echo "create database mydatabase;" | mysql -uroot

No puedo probar esto personalmente, pero creo que debería funcionar.

Editar: Otra opción es usar la -eopción, especificada aquí , así:

shell> mysql -uroot -e "create database mydatabase;"
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.