2011-12-13 1 views
4

사용자가 이미 존재하지 않는다고 가정어떤 권한

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 암호를 변경합니다

  • 를 '암호'
  • create user -statement 오류
과 실패에

답변

2

이 모든 내용은 동일합니다. 즉, 권한없이 새 사용자를 만듭니다. 첫 번째와 두 번째는 GRANT 문을 사용하여 수행합니다. 여기서 USAGE는 NO PRIVILEGES를 의미합니다.

그러나 GRANT + 사용 및 USER 문을 CREATE 사이에 차이가 있습니다 :

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');