mysql – 创建用户并授予无权限

两者之间有区别吗?

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-statements会将密码更改为’password’
> create user-statement将失败并显示错误

最佳答案 所有这些语句都是一样的 – 它们创建没有任何特权的新用户.

第一个和第二个使用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');
点赞