我想编写一个包含一些 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命令?
最佳答案
将命令放入一个文件中,然后将其通过管道传输到 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';"
关于mysql - 如何让 bash 将命令的一部分解释为 MySQL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23431442/