MySQL 8 使用密码创建新用户不起作用

问题描述 投票:0回答:3

我使用MySQL已经好几年了,创建新用户直到MySQL 5.x版本的命令如下:

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

最近我安装了MySQL 8。其中,此命令不起作用。

在触发上述命令时抛出以下错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'password'' at line 1

MySQL 8 的语法有什么变化吗?在 MySQL 8 中创建新用户命令的正确语法是什么?

注意:我在 MySQL 5.x 版本中尝试过这种语法。它工作正常。

mysql sql database
3个回答
76
投票

试试这个:

use mysql;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'localhost';
flush privileges;

10
投票

来自 MySQL 最新版本 -

创建用户 -

CREATE USER 'newuser1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password@123';
GRANT ALL ON *.* TO 'newuser1'@'localhost';

这是创建新用户并授予权限的两行代码。

使用 MySQL 社区服务器版本

8.0.26
windows 10 x64 位服务器。


0
投票

MySql 8.0.27引入了

authentication_policy
,它确定在创建/更改未明确命名插件的用户时的默认身份验证插件。

MySQL 8.0.27
开始,仍使用
default_authentication_plugin
,但与
authentication_policy
结合使用。因此,从 MySQL 8.0.27 开始,
default_authentication_plugin
已被弃用,并将很快被删除。

authentication_policy
的默认值为
'*,,'
,它允许使用一个、两个或三个因素创建或更改帐户。所以,处理的方法有很多种。一种简单的方法是在用户创建期间定义
auth_plugin
,如下所示。

CREATE USER 'linga'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; // Here the auth_plugin is mysql_native_password  

然后您就可以应用

GRANT

© www.soinside.com 2019 - 2024. All rights reserved.