两者之间有区别吗?
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');