728x90
반응형

글을 시작하기에 앞서

댓글을 달아주신 분들의 의견중

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이면 상당히 위험합니다.

프로젝트나 내부에서만 쓰이는 거면 괜찮을 수도 있지만 그 외에는 안됩니다.

정말 필요한 작업만하시고 외부 권환하고 삭제하셔야 합니다.

 

 

라고 알려주셨습니다.

 

꼭 필요한 경우만 사용하시고 삭제하시거나 

혹시나 더 좋은 해결 방안이 있으신 분들은

댓글로 알려주시면 감사하겠습니다.

 

728x90
반응형

+ Recent posts