[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 상에서 유저를 사용해보자.