试着

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 --version
mysql  Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)

对我有用的是:

mysql> USE mysql;
mysql> UPDATE User SET Host='%' WHERE User='root' AND Host='localhost';

其他回答

这招对我很管用:

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

这可能有用:

grant all on dbtest.* to 'dbuser'@'%' identified by 'mysql_password';

我的规格:

mysql --version
mysql  Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)

对我有用的是:

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'desired_password';
mysql> GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' WITH GRANT OPTION;

两个查询的响应:

Query OK, O rows affected (0.10 sec*)

注意:我之前创建了一个数据库(db_name),并创建了一个用户凭据,赋予数据库中所有表的所有特权,而不是使用我在某处读到的默认根用户,这是一个最佳实践。

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

您将得到这个错误

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

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

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

select User, Host from User;

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