试着

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。


当前回答

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

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';

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

其他回答

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

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

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

对于那些已经对创建用户'root'@'localhost'感到困惑的人,当你已经在服务器机器上有一个root帐户时,请记住,你的'root'@'localhost'和'root'@'your_remote_ip'是mysql服务器中两个不同的用户(相同的用户名,但不同的范围)。因此,创建一个带有your_remote_ip后缀的新用户实际上会创建一个新的有效的根用户,您可以使用该用户从远程机器访问mysql服务器。

例如,如果您使用root从IP为10.154.10.241的远程机器连接到mysql服务器,并且您希望为远程root帐户设置一个密码,该密码为'Abcdef123!@#',下面是你需要遵循的步骤:

On your mysql server machine, do mysql -u root -p, then enter your password for root to login. Once in mysql> session, do this to create root user for the remote scope: mysql> CREATE USER 'root'@'10.154.10.241' IDENTIFIED BY 'Abcdef123!@#'; After the Query OK message, do this to grant the newly created root user all privileges: mysql> GRANT ALL ON *.* TO 'root'@'10.154.10.241'; And then: FLUSH PRIVILEGES; Restart the mysqld service: sudo service mysqld restart Confirm that the server has successfully restarted: sudo service mysqld status

如果上面的步骤没有任何错误地执行,那么您现在可以使用root从远程机器访问mysql服务器。

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。

复制并立即使用:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

而不是使用单行代码,如:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

然后:

GRANT ALL ON *.* TO 'username'@'localhost';

然后:

FLUSH PRIVILEGES;