创建用户并授予无权限

时间:2011-12-13 15:05:14

标签: mysql sql privileges

之间有区别吗?
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 - 语句会将密码更改为“密码”
  • create user - 语句将失败并显示错误

1 个答案:

答案 0 :(得分:2)

所有这些陈述都是相同的 - 他们创建没有任何特权的新用户。 第一个和第二个使用GRANT语句,其中USAGE表示 - NO PRIVILEGES。

但GRANT + USAGE和CREATE USER语句之间存在差异:

grant usage on *.* to 'username1'@'localhost'; -- when password is not specified
在NO_AUTO_CREATE_USER sql模式下,

会抛出错误。

从引用 - NO_AUTO_CREATE_USER防止GRANT自动创建新用户,否则也会这样做,除非还指定了非空密码。

当用户存在时,您对GRANT和CREATE USER语句是正确的; CREATE USER将抛出错误,但在这种情况下,如果要更改密码,可以使用SET PASSWORD语句,例如 -

SET PASSWORD FOR 'username'@'localhost' = PASSWORD('new password');