试着

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。


当前回答

在选择语句中,将'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

以我为例,我想做一些类似的事情,我遵循了这里的一些步骤,但最好的方法是@星云提到的:

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

在这之后,我遇到了一个错误,而试图查询数据库或连接SQLTools从VSCode。

客户端不支持服务器请求的认证协议;考虑升级MySQL客户端

运行这个查询将修复这个问题:

ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Your_newP@s$w0Rd';

我还想提到的是,这些步骤在本地环境中是可以工作的,在生产环境中执行某些操作时,建议将每个用户分配到每个数据库,并相应生成密码,如果需要,还可以采取不同的其他安全措施。

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

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

冲洗特权;

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

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