在bash中用一行创建mysql数据库


24

是否可以在bash中用一行命令创建一个空数据库?

我的新手尝试失败了:

mysql -uroot $(create database mydatabase;)

我最终不得不

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

Answers:


32

@Nitrodist的答案会奏效,但问题太过复杂了。MySQL的命令行客户端支持非常方便的-e切换,如下所示:

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

您当然可以在其中替换任何有效的SQL。


抱歉,经过更多研究后,我编辑了答案。
Nitrodist 2011年

5
不需要引号mysql -uroot -e "create database foo"
IanVaughan'3

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

14

根据MySQL的文档,mysql可以从stdin

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

您可以使用“ 流程替换”来完成此操作:

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

或者你可以就管到stdinmysql正常使用:

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

无法亲自测试,但我认为这应该可行。

编辑:另一个选项是使用此处-e指定的选项,如下所示:

shell> mysql -uroot -e "create database mydatabase;"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.