如何让bash将部分命令解释为MySQL命令

时间:2014-05-02 15:14:21

标签: mysql linux bash shell

我想编写一个包含一些MySQL语句的bash脚本。

#!/bin/bash
mysql -u root --password=passwd
CREATE DATABASE test
GRANT ALL PRIVILEGES ON test.* TO 'testuser'@'localhost' \
IDENTIFIED BY 'passwd';

当我运行db.sh时,出现以下错误:bash CREATE:command not found.

我尝试了以下但没有运气:

#!/bin/bash
cat << EOF | mysql -u root --password=passwd
CREATE DATABASE test;
GRANT ALL PRIVILEGES ON test.* TO 'testuser'@'localhost' \
IDENTIFIED BY 'passwd';
EOF

有没有办法让bash知道mysql -u root --password=passwd后面的命令是MySQL命令而不是bash命令?

1 个答案:

答案 0 :(得分:0)

将命令放入文件中,然后将它们导入mysql。即。

mysql -u root --password=passwd < file_with_commands.sql

或者,使用EOF:

mysql -u root --password=passwd << EOF
<comands>...

编辑:继续评论,试试这个(全部在一行):

mysql -u root --password=passwd -e "CREATE DATABASE test; GRANT ALL PRIVILEGES ON test.* TO 'testuser'@'localhost' IDENTIFIED BY 'passwd';"