상세 컨텐츠

본문 제목

[쀼] 백엔드 서버, 데이터베이스 서버 분리 (MySQL 직접 운영)

🔥Activites/[프로젝트] 진행하며 생각을 했다

by :부셔져버린개발자 2025. 2. 21. 12:05

본문

동일한 서버 내에 백엔드, 데이터베이스가 위치하고 있었다 

임시로 Docker로 올려놓고 사용하고 있었는데 ec2 분리하는 김에 AWS RDS는 비싸니 직접 설치하여 사용하기로 했다 

 

백엔드

- mysql에 접근할 때 사용할 유저이름, 패스워드 설정

spring.datasource.url=jdbc:mysql://<MySQL_Server_Private_IP>:3306/<데이터베이스>
spring.datasource.username=<username>
spring.datasource.password=<password>

 

MySQL 설치 

1. ec2 생성

2. MySQL 설치 

sudo apt update
sudo apt install mysql-client

mysql -h <MySQL_Server_Private_IP> -u <username> -p

 

3. MySQL 보안 설정 실행

mysql_secure_installation

 

VALIDATE PASSWORD COMPONENT 사용 여부 : y(Yes) 또는 n(No) 선택 (선택 사항)

익명 사용자 삭제 → Y

원격 Root 접속 비활성화 → Y

테스트 데이터베이스 삭제 → Y

권한 적용 → Y

 

 

 

4. 유저 생성

더보기

🔍 MySQL의 auth_socket 플러그인이란?

auth_socket은 MySQL이 Linux 시스템의 사용자 인증을 직접 활용하는 방식

MySQL root 계정에 접속할 때 별도의 비밀번호 없이도 Linux 시스템 계정(root 또는 mysql)으로 로그인하면 자동으로 인증됨

이 방식은 보안성을 높이고, 시스템 관리자의 MySQL 접근을 간편하게 만들어 줌 

CREATE USER '<username>'@'%' IDENTIFIED BY '<password>';

 

GRANT ALL PRIVILEGES ON <데이터베이스>.* TO '<username>'@'%';

(최소권한의 원칙) 직접 테이블 구조 변경 불가능하도록 하는 것이 보안상 더 좋지만.. 

 

 

5. 데이터베이스 생성

CREATE DATABASE IF NOT EXISTS <데이터베이스>;

 

6. MySQL 원격 접속 활성화 

기본적으로 로컬에서만 접속 가능하도록 설정되어 있다 

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0

 

7. MySQL이 있는 EC2의 보안 그룹 규칙 수정

백엔드 보안 그룹에서만 접근 가능하도록 변경

 

8. 백엔드 서버에서 MySQL 접속이 가능한지 확인

 

 

분리 완료!

728x90

관련글 더보기