создать базу данных mysql с одной строкой в ​​bash

21

Возможно ли создать пустую базу данных с одной командной строкой в ​​bash?

Мои попытки новичка потерпели неудачу:

mysql -uroot $(create database mydatabase;)

Я заканчиваю тем, что должен

  • mysql -uroot
  • create database mydatabase;
  • exit;
chrisjlee
источник

Ответы:

30

Ответ @ Nitrodist сработает, но он переоценивает проблему. Клиент командной строки MySQL поддерживает очень удобный -e переключиться, вот так:

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

Конечно, вы можете заменить любой действительный SQL-код.

Kromey
источник
извините, я отредактировал свой ответ после еще одного исследования
Nitrodist
5
Цитаты не обязательны mysql -uroot -e "create database foo"
IanVaughan
1
Да, использование дополнительных одинарных кавычек дало мне 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, Без них все работает нормально. Спасибо @IanVaughan
leymannx
13

Согласно документации MySQL, mysql может принимать команды от stdin

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

Ты можешь использовать Процесс замены чтобы сделать это:

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

или вы можете просто направить трубку к stdin из mysql обычно:

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

Не могу проверить это лично, но я думаю, это должно работать.

Редактировать: Другой вариант заключается в использовании -e опция, указанная Вот , вот так:

shell> mysql -uroot -e "create database mydatabase;"
Nitrodist
источник