试着

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。

其他回答

非常感谢@星云 如果您想只允许远程IP使用以下命令

CREATE USER 'user_test'@'113.yy.xx.94' IDENTIFIED BY 'YOUR_PWD';
GRANT ALL ON *.* TO 'user_test'@'113.yy.xx.94';
FLUSH PRIVILEGES;

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

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

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

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

用sudo编译mysql

sudo mysql