试着

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)这对我很管用。首先,创建一个新用户。示例:用户名为foo,密码为bar

> mysql> CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';

2)将下面的代码替换为用户名'foo'。

> mysql> GRANT ALL PRIVILEGES ON database_name.* TO'foo'@'localhost';

注意:database_name是你想要拥有权限的数据库。意思是所有对所有

3)以foo用户登录

mysql> mysql -u foo -p

密码:酒吧

4)确保你的初始连接从Sequelize设置为foo与pw bar。

其他回答

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

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

从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的安全风险,请参阅:

授予数据库的所有权限

我的规格:

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),并创建了一个用户凭据,赋予数据库中所有表的所有特权,而不是使用我在某处读到的默认根用户,这是一个最佳实践。

用sudo编译mysql

sudo mysql

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

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

使用的参考资料- 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