Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Is it possible to create an empty database with one line of command in bash?

My newbie attempts have failed:

mysql -uroot $(create database mydatabase;)

I end up having to

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

2 Answers

up vote 13 down vote accepted

@Nitrodist's answer will work, but it's over-engineering the problem. MySQL's command-line client supports the very handy -e switch, like so:

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

You can of course substitute any valid SQL into there.

sorry I edited my answer after some more research. –  Nitrodist May 25 '11 at 20:50
Thanks! Exactly what i'm looking for. –  chrisjlee May 25 '11 at 21:35
The quotes are not required mysql -uroot -e "create database foo" –  IanVaughan Mar 7 '12 at 14:55
add comment

According to MySQL's documentation, the mysql can take commands from stdin

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

You can use Process Substitution to accomplish this:

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

or you can just pipe it to the stdin of mysql normally:

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

Can't test this personally, but I think this should work.

Edit: Another option is to use the -e option, specified here, like so:

shell> mysql -uroot -e "create database mydatabase;"
add comment

This site is currently not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .