2차 - Mysql 사용자 생성 및 권한 부여

라꾸·2022년 10월 24일
0

Spring이나 SpringBoot프로젝트에 Mysql 계정을 연결 시킬 때, 보안적인 측면에서 root 계정을 사용하는 것 보다는 사용자(서브 계정)를 하나 생성하여 필요한 권한만 부여한 뒤 사용하는것이 좋습니다.

▶ 사용자 생성하기

사용자를 생성 할때는 CREATE USER 를 사용하여 생성하면 되는데요.
{username} 에는 생성할 사용자의 이름을, {password}에는 사용자의 패스워드를 입력해주시면 됩니다.

'{username}'@ 뒤에 'localhost'가 붙으면 해당 컴퓨터에서만 접근이 가능하다는 뜻이고,
'%' 가 붙으면 모든 클라이언트에서 접근이 가능하다는 뜻입니다.

CREATE USER '{username}'@'localhost' IDENTIFIED BY '{password}'
CREATE USER '{username}'@'%' IDENTIFIED BY '{password}'

저는 username을 demo로 password를 demo1234로 설정하고 모든 클라이언트에서 접근이 가능한 계정을 생성해보도록 하겠습니다.

CREATE USER 'demo'@'%' IDENTIFIED BY 'demo1234';

위 쿼리를 입력한 뒤 왼쪽의 화살표 버튼을 눌러주시면 사용자가 생성이 됩니다.

▶ 사용자 권한 설정하기

방금 전 생성한 사용자에게 권한을 부여해보도록 하겠습니다.
권한을 부여할 때는 GRANT 명령어를 사용하면 됩니다.
SB_DEMO라는 DB에 대하여 SELECT, INSERT, UPDATE, DELETE 권한만 주도록 하겠습니다.

GRANT SELECT, INSERT, UPDATE, DELETE ON SB_DEMO.* TO 'demo'@'%';

위 쿼리를 입력한 뒤 왼쪽의 화살표 버튼을 눌러주시면 권한 부여가 됩니다.

▶ 확인하기

방금 전 만들었던 사용자를 DBeaver에 연결해보도록 하겠습니다.
DBeaver에 Docker로 실행한 Mysql 연결하기를 참고 하여 Mysql Connection을 새로 맺어주시면 되는데요.
대신 Username을 demo로, Password를 demo1234로 설정하여 진행해주시면 됩니다.

그럼 아래와 같이 커넥션이 하나 더 생기게 되는데요, localhost는 root 계정으로 접속한 것이기 때문에 SB_DEMO와 sys라는 DB가 모두 나오지만 localhost2는 demo 계정으로 접속한 것이기 때문에 SB_DEMO만 나오는 것을 확인하실 수 있습니다.

localhost2에 오른쪽 마우스를 클릭 하고 SQL 편집기 -> SQL 편집기를 열어 새로운 편집기를 실행해줍니다.

해당 계정은 SELECT, INSERT, UPDATE, DELETE 권한만 있어야 하기 때문에 아래와 같이 CREATE 쿼리를 입력하면 오류가 나게 됩니다.

0개의 댓글