본문 바로가기

프로젝트 셋업/MAC 셋업

[DataBase] DB 계정 추가하고 권한 부여하기

MSA 아키텍처 기반 설계를 하다 보면 다음과 같은 상황이 놓을 수 있습니다.

1. A 서비스가 DB 1에 연결해야 하는 경우

2. D 서비스가 DB3, 4 에 연결해야 하는 경우

3. A,C 서비스가 DB 1에 연결해야 하는 경우

즉, 서비스 별로 하나의 DB 뿐 아니라 여러 개의 DB를 연결할 수 있고, 혹은 같은 DB를 공유할 수도 있습니다.

물론 서비스마다 각자의 DB를 사용하는게 좋지만, 모든 프로젝트가 DB를 세분화할 수 없습니다.

DB 데이터의 실시간 처리 혹은 지출 문제등에 의해서 조율을 할 필요가 있을겁니다.

 

이러한 상황에서 서로 다른 서비스가 하나의 DB 계정을 혹은 admin 계정을 사용한다고 하면, 예상치 못한 사고가 발생할 수 있습니다.

이러한 상황을 최대한 방지하기 위해 서비스마다 DB 계정을 생성하고, 특정 DB의 접근 권한을 부여합니다.

해당 게시글은 이러한 과정을 진행하기 위해 DB 계정을 생성하고 권한을 부여하는 방식을 정리할 예정입니다.

 


 

[DB 계정 생성]

create user 'DB_Id'@'DB_access' identified by 'DB_PW';

이게 기본 DB 계정 생성 Query라고 보시면 될 거 같습니다.

 

[Local PC에서만 사용할 경우]

create user 'staking-project'@'localhost' identified by 'staking-project';

로 생성하시면 됩니다.

※원래 패스워드의 경우 보안을 위해 평문이 아닌 Sha2 등의 암호화를 거쳐 생성하길 제안드립니다.

 

[특정 ip에서만 접근할 경우]

create user 'staking-project'@'192.168.0.1' identified by 'staking-project';

 

[특정 ip 대역에서만 접근할 경우]

create user 'staking-project'@'192.168.%' identified by 'staking-project';

 

[외부에서 접근할 경우]

create user 'staking-project'@'%' identified by 'staking-project';

 


[DB 계정에 권한 부여하기]

 

DB 계정에 Table | DB 별 접근을 허용하기 위해서는 Grant 명령어로 접근 권한을 부여하면 됩니다.

grant '권한명' on DB_Schema.table tgo 'DB_Id'@'DB_access';

QueryDB권한을 부여하면 됩니다.

 

프로젝트에서 위에서 생성한 staking-projectstake_project Schema에 대한 Insert, Select, Update 권한을 부여할 예정입니다.

grant select,insert,update on stake_project.* to 'stake-api-project'@'localhost';

 

 

[DB에 대한 권한 부여 시]

grant all privileges on stake_project.* to 'stake-api-project'@'localhost';

 

[모든 DB 스키마에 대한 권한 부여 시]

grant all privileges on *.* to 'stake-api-project'@'localhost';

 

[특정 Table에 대한 권한 부여 시]

grant all privileges on stake_project.tableName to 'stake-api-project'@'localhost';

 

[특정 Table의 특정 Cloumn에 대한 권한 부여 시]

grant update(columnName1, columnName2) on stake_project.tableName to 'stake-api-project'@'localhost';

등과 같이 작업하시면 됩니다.

 

이상으로 MSA 아키텍처 프로젝트 별 DB 계정 생성 시에 대한 Query를 정리합니다.