试着

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

得到

错误1064(42000):你有一个错误的SQL语法;查看手册 对应于你的MySQL服务器版本,正确的语法使用'IDENTIFIED BY 'root' WITH GRANT OPTION'在第一行。

注意:在以前的版本中尝试时,相同的工作。

也试过

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

得到

错误1410(42000):不允许使用GRANT创建用户

MySQL(8.0.11.0)用户名/密码为root/root。


当前回答

这招对我很管用:

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

其他回答

1. 授予的权限

授予mysql>的所有权限。以授予选项“根”@“%”;

mysql> FLUSH PRIVILEGES

2. 检查用户表:

Mysql >使用Mysql

Mysql > select host,user from user

3.修改配置文件

Mysql默认绑定ip:127.0.0.1,如果我们要远程访问服务,只需删除配置

#Modify the configuration file
vi /usr/local/etc/my.cnf

#Comment out the ip-address option
[mysqld]
# Only allow connections from localhost
#bind-address = 127.0.0.1

4.最后重新启动服务

重启mysql

我也有同样的问题,所以来了这里。特别地,对于本地开发,我希望能够在没有sudo的情况下执行mysql -u root -p。我不想创建一个新用户。我想从本地PHP web应用程序使用根。

错误消息具有误导性,因为默认的'root'@'%'用户权限没有任何问题。

相反,正如一些人在其他答案中提到的那样,解决方案只是在我的/etc/mysql/mysql.conf.d/mysqld.cnf配置中设置bind-address=0.0.0.0而不是bind-address=127.0.0.1。其他方面不需要更改。

在选择语句中,将'user'@'%'更改为'user'@'localhost'解决了我的问题

非常感谢@星云 如果您想只允许远程IP使用以下命令

CREATE USER 'user_test'@'113.yy.xx.94' IDENTIFIED BY 'YOUR_PWD';
GRANT ALL ON *.* TO 'user_test'@'113.yy.xx.94';
FLUSH PRIVILEGES;

这招对我很管用:

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