创建用户并不授予任何权限。

6

这两个之间有什么区别吗?

grant usage on databasename.* to 'username'@'localhost' identified by 'password'

并且。
grant usage on *.* to 'username'@'localhost' identified by 'password'

并且。
create user 'username'@'localhost' identified by 'password'

假设用户不存在?我的理解是每个语句都会创建一个带有密码的用户,并且不授予用户任何权限。

如果用户已经存在,则我期望会有一些不同:

  • grant语句将更改密码为“password”
  • create user语句将失败并显示错误信息
1个回答

3
所有这些语句都是一样的 - 它们创建一个没有任何特权的新用户。 第一和第二个使用GRANT语句进行操作,其中USAGE表示-无特权。
但是GRANT+USAGE和CREATE USER语句之间存在差异:
grant usage on *.* to 'username1'@'localhost'; -- when password is not specified

在 NO_AUTO_CREATE_USER SQL 模式下,如果 GRANT 语句自动创建新用户,则会抛出错误。
参考文献中指出,NO_AUTO_CREATE_USER 可以防止 GRANT 在没有指定非空密码的情况下自动创建新用户。
关于已存在的用户,您对 GRANT 和 CREATE USER 语句的理解是正确的;CREATE USER 会抛出错误。但是,在这种情况下,如果您想要更改密码,可以使用 SET PASSWORD 语句,例如 - SET PASSWORD
SET PASSWORD FOR 'username'@'localhost' = PASSWORD('new password');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接