任何人都错了吗?为什么输出语法错误?
欢迎使用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>
此致
哈维
答案 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管理员