MYSQL 유저 권한 주기 에러 ERROR 1410 (42000): You are not allowed to create a user with GRANT
글을 시작하기에 앞서
댓글을 달아주신 분들의 의견중
root 계정에 모든 권한 허용시
DB 가 외부에 노출이 되면 위험하다는 의견이 있었습니다.
만약 해당 사항이 있으시다면 이점 참고하여 주시기 바랍니다.
MYSQL 에서 DB를 생성하고 유저에게 권한을 주려고 할 때
root 로 접속했음에도
ERROR 1410 (42000): You are not allowed to create a user with GRANT
라는 에러를 내뿜으며 유저에게 권한주기 권한이 없다는 에러가 발생한 적이 있었습니다.
약간의 구글링을 통하여 해결방안을 찾아냈습니다.
우선
CREATE DATABASE testDB;
쿼리로 데이터베이스를 생성해 준 후
CREATE USER testUser@localhost identified by 'password';
쿼리로 유저를 생성 해 주었습니다.
그리고
GRANT ALL PRIVILEGES ON testDB.* TO 'testUser'@'localhost' WITH GRANT OPTION;
쿼리를 날려서 권한을 주려고 했는데
위와같은 에러가 발생을 하였습니다.
해결방안은
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
위의 두 쿼리로 루트 계정을 생성하고
생성된 계정에 먼저 권한을 부여 한 후
권한을 주는 쿼리를
GRANT ALL PRIVILEGES ON testDB.* TO 'testUser'@'%' WITH GRANT OPTION;
로 수정하여 권한을 부여하니 잘 동작하였습니다.
+ 추가
댓글을 달아주신 분들에 의하면
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
root권한을 가진 유저를 만드는 거라 외부로 노출된 db이면 상당히 위험합니다.
프로젝트나 내부에서만 쓰이는 거면 괜찮을 수도 있지만 그 외에는 안됩니다.정말 필요한 작업만하시고 외부 권환하고 삭제하셔야 합니다.
라고 알려주셨습니다.
꼭 필요한 경우만 사용하시고 삭제하시거나
혹시나 더 좋은 해결 방안이 있으신 분들은
댓글로 알려주시면 감사하겠습니다.