2월 18, 2024

[MySQL] 유저 생성하고 권한 부여하기 (Intellij Databse Navigator Console 활용하기)

오늘은 MySQL 상에서 유저를 생성하고 권한을 부여하는 방법에 대하여 알아보도록 하겠다. 


그 전에, 우리는 Intellij에서 MySQL을 실행하고 있고 @localhost라는 DB를 사용하고 있다고 가정해보자. 



Console을 클릭하여 Intellij 상에서도 DB를 실행할 수 있어서 매우 편리한 기능이다. 


https://www.programmingstory.com/2024/02/intellij-community-edition-database.html


참고로 Intellij에서 Database Navigator Plugin을 추가하여 사용하는 방법은 위 링크, 전 포스팅에 정리해놓았으니 참고하면 된다. 



먼저 우리는 user1 이라는 root 계정이 아닌 유저를 생성할 것이다. 계정을 생성할 때 password를 지정해줄 수 있는데, password는 간단히 password1이라고 설정해보겠다. 그러면 아래와 같이 SQL을 작성해줄 수 있다. 


create user 'user1'@'localhost' identified by 'password1';


위 SQL을 통해 우리는 user1을 생성할 수 있다. identified by 뒤에는 설정하려는 password를 적어주면 된다. 


다음으로 그러면 user가 잘 생성되었는지를 판단하기 위해서 


select * from `mysql`.`user`; 

라고 적어줄 수 있다. mysql을 MySQL에서 기본적으로 제공되는 schema이다. 



실행 결과 위와 같이 User들이 출력되는 것을 알 수 있다. 

기본적으로 있었던 위 4개의 User에 우리가 생성해준 'user1'이라는 user가 하나 더 추가적으로 생긴 것을 알 수 있다. 



전체를 보면 이렇게 각 User들의 권한이 명시되어 있고 root 계정만 모든 권한들이 다 부여되어 있는 것을 알 수 있다. 


따라서 생성한 User에 특별한 권한을 부여하고 싶다면 추가적으로 SQL을 작성해주어야 한다. 

우리는 특정 Schema에 user1의 권한을 부여해보고 싶다. 


그러면 아래와 같이 SQL을 작성해줄 수 있다. 

grant all on `schema_name`.* to 'user1'@'localhost' with grant option; 


특정 schema의 모든 권한을 user1에게 주고 싶다면 위와 같이 작성할 수 있다.

여기서 "with grant option"이란 다른 사람에게 부여한 권한을 또 다른 사람에게 줄 수 있는 옵션이다. 


권한을 추가해준 뒤 

user1의 현재 권한을 알고 싶다면 아래와 같이 SQL을 작성해 줄 수 있다. 

show grants for 'user1'@'localhost';




그러면 위와 같이 우리가 추가해준 

특정 스키마의 모든 권한, 즉 "ALL PRIVILEGES"까지 출력되는 것을 알 수 있다. 


오늘은 Intellij Database Navigator를 사용하여 MySQL 상 user를 생성해보고 권한을 부여해보는 SQL을 작성하는 포스팅을 해 보았다.


적절한 권한을 가진 user를 생성하여 올바르게 Backend 상에서 유저를 사용해보자.