试着

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。


当前回答

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

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特权

冲洗特权;

其他回答

ubuntu 22.04.1 Mysql版本8.0.31-0

我的根用户没有GRANT权限,所以我不能授予新用户任何权限。 解决方案是删除当前的根用户,并使用'mysql_native_password'创建一个新用户。

命令如下 以root用户登录mysql

mysql> DROP USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD' FROM mysql.user;
mysql> CREATE USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'locahost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

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

试试这个,我有同样的问题,我尝试了几个选项,但下面的工作。

给我全部。“根”@“%”;

使用的参考资料- https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04#step-6-%E2%80%94-testing-database-connection-from-php-optional

我也有同样的问题,所以来了这里。特别地,对于本地开发,我希望能够在没有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。其他方面不需要更改。

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

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