MySQL语句在mysql中运行,但不在命令行中运行

时间:2016-08-19 06:17:14

标签: mysql linux sh fabric

我正在尝试从命令行执行特定的mysql命令。当我这样做时,它会失败,但如果我从mysql interactive中执行完全相同的命令,它就可以工作。

以下命令行版本失败:

$ mysql -uscott -p -e "GRANT ALL PRIVILEGES ON `myuser\_%`.* TO 'myuser'@'localhost';"

给出的错误是:

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 '* TO 'myuser'@'localhost'' at line 1

只将mysql命令复制并粘贴到mysql中:

mysql> GRANT ALL PRIVILEGES ON `myuser\_%`.* TO 'myuser'@'localhost';

在为数据库创建用户时,我从phpmyadmin逐字记录了这个命令。如何修复它以便它可以在命令行中运行?

1 个答案:

答案 0 :(得分:1)

你的shell正在扩展*(bash?)。

您可以通过在SQL语句周围使用单引号而不是使用双引号或使用\

转义*来解决此问题。