create mysql database with one line in bash

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;

Solution 1:

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

Solution 2:

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;"