MySQL 语句在 mysql 中有效,但在命令行中无效

MySQL statement works in mysql but not from command line

我正在尝试从命令行执行特定的 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 逐字获取了这个命令。我怎样才能修复它以便它可以从命令行运行?

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

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

转义 * 来解决此问题