无法在MySQL 5.7中将所有特权授予root用户。语法错误。

4
这个问题真的很令人困惑。我希望我没有做什么愚蠢的事情,但这根本没有道理。我在Ubuntu上安装了一个新的MySQL 5.7,以root身份本地登录mysql,并运行了以下命令:
CREATE USER 'root'@'%' IDENTIFIED BY 'password';

成功!

接下来,我运行了这个命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

不好。这导致了以下错误:

ERROR 1064 (42000): 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 'root'@'%' WITH GRANT OPTION' at line 1

什么鬼?我在MySQL服务器上运行了这个命令已经两年了,为什么不起作用?作为一个好的开发者,我决定去查阅官方文档。以下是5.7手册中给出的示例(http://dev.mysql.com/doc/refman/5.7/en/adding-users.html):

mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'%'
->     WITH GRANT OPTION;

我是不是疯了?除了用户名,这就是我做的。这应该可以正常工作,对吧???令人困惑的是,互联网上缺乏其他人报告这个问题,所以我认为我肯定是忽略了一些显而易见的东西,但我已经花费了两个小时,还是无法弄清楚。提前致谢。


我以为在安装MySQL时已经完成了这个过程。SHOW GRANTS FOR 'root'@'%' 的输出显示了什么? - gr1zzly be4r
@gr1zzlybe4r 我认为默认用户是root@localhost,而不是root@% - Barmar
不,MySQL默认只为root@localhost设置了这个。我现在无法登录服务器,但明天我会发布SHOW GRANTS输出结果。 - Doc
我能想到的唯一可能是你不小心输入了一个看起来像 * 但实际上不是真正的 ASCII 字符的 Unicode 字符,或者可能是其他一些不可打印字符。 - Barmar
2个回答

6
在新安装中,默认情况下,用户“root@%”不存在,必须单独创建。以下步骤可供参考:
CREATE USER 'root'@'%' IDENTIFIED BY 'yourpassword';    
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  WITH GRANT OPTION;
FLUSH PRIVILEGES;

在尝试远程访问 Bitnami MySQL 虚拟机的指令时,我发现了这个。非常好用,谢谢。https://docs.bitnami.com/virtual-machine/infrastructure/mysql/administration/connect-remotely/ - jweaver

2

MySQL语法已经发生了变化。

GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接