关于SQL语法的问题

时间:2010-07-19 10:56:58

标签: mysql

任何人都错了吗?为什么输出语法错误?

  

欢迎使用MySQL监视器。   命令以;结尾;或\ g。你的MySQL   连接ID是169服务器版本:   5.0.51a-3ubuntu5.7(Ubuntu)

     

输入'help;'或'\ h'寻求帮助。类型   '\ c'清除缓冲区。

     

的MySQL>在 TO上授予所有特权   '根' @ 'localhost' 的        - > ;查询正常,0行受影响(0.14秒)

     

的MySQL>由'm'与GRANT识别   选项; ERROR 1064(42000):你有   SQL语法中的错误;检查   与您的MySQL对应的手册   用于正确语法的服务器版本   在'IDENTIFIED BY'new_password'with WITH GRANT附近使用   选项'第1行mysql>

此致

哈维

4 个答案:

答案 0 :(得分:4)

是不是分为两行,所以MySQL客户端将其理解为两个查询而不是一个?

尝试将查询作为一行执行:

GRANT ALL PRIVILEGES ON . TO 'root'@'localhost' IDENTIFIED BY 'm' WITH GRANT OPTION;

答案 1 :(得分:4)

最后还有一个额外的分号:

GRANT ALL PRIVILEGES ON . TO 'root'@'localhost' ;

您可以将MySQL查询拆分为多行,因此编写它时没有问题:

 GRANT ALL PRIVILEGES ON . TO 'root'@'localhost'
 IDENTIFIED BY 'm' WITH GRANT OPTION;

但是一旦MySQL看到一个分号(结束查询语句),它将执行缓冲区中的任何内容,在您的情况下,这是一个完整的,有效的查询(向root用户授予所有权限);但是第二行变成了一个新的查询:

   IDENTIFIED BY 'm' WITH GRANT OPTION;

本身无效。

答案 2 :(得分:0)

你把一个陈述分成两位。

答案 3 :(得分:0)

您已经使用了mysql命令行工具。分号结束你的sql命令,如\ g或\ G。

如果您不喜欢或不知道如何使用此命令行工具,则应该使用其他工具: http://dev.mysql.com/downloads/gui-tools/5.0.html - > Mysql管理员