之间有区别吗?
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
- 语句将失败并显示错误答案 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');