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

chr*_*lee 27 bash database mysql command-line

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

我的新手尝试失败了:

mysql -uroot $(create database mydatabase;)

我最终不得不

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

Kro*_*mey 38

@Nitrodist 的答案会起作用,但它对问题进行了过度设计。MySQL 的命令行客户端支持非常方便的-e开关,如下所示:

mysql -uroot -e "create database 'foo'"
Run Code Online (Sandbox Code Playgroud)

您当然可以将任何有效的 SQL 替换到那里。

  • 引号不是必需的`mysql -uroot -e "create database foo"` (5认同)
  • 是的,使用额外的单引号在第 1 行给了我一个 `ERROR 1064 (42000): You have an error in your SQL syntax; 检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“foo”附近使用的正确语法。没有它们,它工作正常。谢谢@IanVaughan (2认同)

Nit*_*ist 14

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

shell> mysql -uroot < script.sql > output.tab
Run Code Online (Sandbox Code Playgroud)

您可以使用进程替换来完成此操作:

shell> mysql -uroot <(echo "create database mydatabase;") 
Run Code Online (Sandbox Code Playgroud)

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

shell> echo "create database mydatabase;" | mysql -uroot
Run Code Online (Sandbox Code Playgroud)

无法亲自测试,但我认为这应该有效。

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

shell> mysql -uroot -e "create database mydatabase;"
Run Code Online (Sandbox Code Playgroud)