MySQL에서 사용자 계정 만들기

  • Post Author:
  • Post Category:칼럼
  • Post Comments:0 Comments
  • Post last modified:October 11, 2013

MSSQL에서 MySQL 오니 불편한 점이 많네 많아. 단순히 익숙하지 않은 탓인가 싶지만 아무래도 돈 받고 파는 제품일수록 편의성을 더 생각하는 게 아닐까?

아무튼 MySQL은 DROP DATABASE IF EXISTS db_name; 식의 구문을 지원해서 특정 객체가 존재하는지 여부를 판단해 행동하게 프로그램을 짠다. 그런데 사용자 계정 구문 CREATE USER는 이상하게도 IF EXISTS를 지원하지 않는다. 그래서 데이터베이스 계정을 자동으로 생성하고 삭제하는 스크립트를 짤 때 고민했는데 의외로 해결법은 쉬웠다. 방법은 크게 두 가지!

mysql.user 테이블 조회하기

    SELECT * FROM mysql.user WHERE User = \'my_id\';

이런 식으로 해당 사용자 계정이 있는지 없는지 확인 가능하다. 하지만 MySQL은 IF THEN / END IF 구문을 스크립트에서 쓰지 못하고 루틴(저장 프로시저, 함수 등)에서만 쓸 수 있기 때문에 이런 분기문을 이용하는데 제약이 있다. 그래서 다른 꼼수를 쓰는데

GRANT 구문 이용하기

GRANT는 원래 사용자에게 특정 권한을 부여하는데 쓰는 기능이다. 그런데 GRANT는 특이한 행동 양식을 보인다. GRANT에 명시된 사용자 계정이

  • 존재하면, 해당 사용자 계정에 권한을 부여한다.
  • 존재하지 않으면, 해당 사용자 계정을 생성한 후 권한을 부여한다.

그래서 이런 식으로 사용자 계정을 만드는데 사용해도 된다.

GRANT ALL PRIVILEGES  ON db_name.* 
TO \'user\'@\'%\' IDENTIFIED BY \'password\' 
WITH GRANT OPTION;

참고 문헌

Buy me a coffeeBuy me a coffee

최 재훈

Kubernetes, DevSecOps, Golang, 지속적인 통합 등 다양한 주제에 관심이 많다.