SQL 仅使用 mysql -e --execute 的 GRANT ALL 语句的语法错误
SQL syntax error for GRANT ALL statement only with mysql -e --execute
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 客户端中执行语句时它工作正常。有什么我想念的吗?
示例错误消息
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'@'%' identified by 'mypwd'' at line 1
我发现了问题。用于转义数据库名称的字符是造成语法错误的原因。没有它们的这个声明工作正常
mysql -uroot -proot -e "GRANT ALL ON mydb.* to 'myuser@%' identified by 'mypwd';"
我对 shell 命令知之甚少,但我猜“`”字符做了一些有趣的事情。也许有更多经验的人愿意解释 (- : 以及如何逃避它以防止此类错误
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 客户端中执行语句时它工作正常。有什么我想念的吗?
示例错误消息
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'@'%' identified by 'mypwd'' at line 1
我发现了问题。用于转义数据库名称的字符是造成语法错误的原因。没有它们的这个声明工作正常
mysql -uroot -proot -e "GRANT ALL ON mydb.* to 'myuser@%' identified by 'mypwd';"
我对 shell 命令知之甚少,但我猜“`”字符做了一些有趣的事情。也许有更多经验的人愿意解释 (- : 以及如何逃避它以防止此类错误