试着

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。


当前回答

我也遇到了同样的问题。即使路由有'%'也不能远程连接。现在,看看my.ini文件(windows中的配置文件),bind-address语句被遗漏了。

所以…我把这个bind-address = *放在[mysqld]后,重新启动服务。现在起作用了!

其他回答

您将得到这个错误

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

如果您试图在一个不存在的用户上运行GRANT !

因此,首先运行这个,以确保你在GRANT中使用的用户与你所拥有的用户完全匹配:

select User, Host from User;

特别要注意的是,您创建的用户是否在localhost,而您试图授予的用户是%

我看到了很多(错误的)答案,就像这样简单:

USE mysql;
CREATE USER 'user'@'localhost' IDENTIFIED BY 'P@ssW0rd';
GRANT ALL ON *.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

注意:可以使用root来连接数据库,而不是自己创建的用户。但是,使用默认的根帐户让应用程序连接到数据库并不是首选的方法。可选特权可以按以下方式应用(请注意并记住最小特权原则):

-- Grant user permissions to all tables in my_database from localhost --
GRANT ALL ON my_database.* TO 'user'@'localhost';

-- Grant user permissions to my_table in my_database from localhost --
GRANT ALL ON my_database.my_table TO 'user'@'localhost';

-- Grant user permissions to all tables and databases from all hosts --
GRANT ALL ON *.* TO 'user'@'*';

如果你遇到以下错误:

错误1130 (HY000):主机' 1.2.3.4 '不允许连接到这个 MySQL服务器

您需要在/etc/mysql/my.cnf文件中增加/修改以下两行,并重新启动mysql。

bind-address           = 0.0.0.0
skip-networking

你可能会遇到以下错误,这有点令人困惑:

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

这意味着要么用户根本不存在,要么user@host组合不存在。你可以用下面的命令检查:

SELECT host, user FROM user

用sudo编译mysql

sudo mysql

我在CentOS上也有同样的问题,这为我工作了(版本:8.0.11):

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

我也遇到了同样的问题。即使路由有'%'也不能远程连接。现在,看看my.ini文件(windows中的配置文件),bind-address语句被遗漏了。

所以…我把这个bind-address = *放在[mysqld]后,重新启动服务。现在起作用了!