试着

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通过用户表中的两列选择帐户。如果是不同的,mysql可能认为您想要通过授权创建一个新帐户,这在8.0版本之后不支持。

其他回答

检查您的用户名和域是否与之前创建的相同。Mysql通过用户表中的两列选择帐户。如果是不同的,mysql可能认为您想要通过授权创建一个新帐户,这在8.0版本之后不支持。

这些命令对我来说很有用:

1-登录mysql,查看所有用户

Sudo mysql -u root 从mysql.user中选择用户和主机;

2-delete旧用户

删除用户root@localhost;

3-创建新用户

创建用户“root”@“localhost”

4-给它添加所有权限:

授予所有*。*到“root”@“localhost” ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password “我的密码”;

5-finally flush特权

冲洗特权;

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

这可能有用:

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

从MySQL 8开始,您不再可以(隐式地)使用GRANT命令创建用户。用CREATE USER代替,后面跟着GRANT语句:

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

请注意WITH GRANT OPTION的安全风险,请参阅:

授予数据库的所有权限