仅使用mysql -e --execute的GRANT ALL语句的SQL语法错误

时间:2015-01-09 16:41:03

标签: mysql bash ubuntu

mysql告诉我在我的ubuntu shell上使用这个语句时出现SQL语法错误

mysql -uroot -proot -e "GRANT ALL ON `mydb`.* to 'myuser'@'%' identified by 'mypwd';"

我也尝试过这种语法:

mysql -uroot -proot -e "GRANT ALL ON `mydb`.* to 'myuser@%' identified by 'mypwd';"

afaik我没有有趣的隐藏字符,当我在mysql客户端中执行语句时,它工作正常。有什么我想念的吗?

示例错误消息

  

第1行的错误1064(42000):您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在' *附近使用' myuser' @'%'由mypwd''在第1行

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。用于转义数据库名称的字符负责语法错误。没有它们的声明可以正常使用

mysql -uroot -proot -e "GRANT ALL ON mydb.* to 'myuser@%' identified by 'mypwd';"

我对shell命令知之甚少,但我想"`"性格做有趣的事情。也许有经验的人可以解释( - :以及如何逃避它以防止此类错误