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;
chrisjlee
fuente

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í.

Kromey
fuente
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;"
Nitrodista
fuente