본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

FastAPI 프로젝트에 연동한 MySQL의 작동 원리

by easyfly 2025. 5. 10.
반응형

FastAPI 프로젝트에 연동한 MySQL의 작동 원리

MySQL을 FastAPI 또는 Python 프로젝트와 연동했다는 것은, 애플리케이션이 MySQL 데이터베이스에 접근하여 데이터를 읽고 쓰는 기능을 사용할 수 있도록 설정했다는 뜻입니다. 이때 내부적으로 어떤 일이 벌어지는지, 그리고 '최고관리자(root)' 계정이 어떤 의미를 가지는지 알아봅니다.


✅ 1. MySQL 최고관리자(root)의 역할

MySQL에서 root는 최고 권한을 가진 사용자입니다. 리눅스에서의 root와 비슷한 개념으로 보면 됩니다.

root 계정의 권한:

  • 데이터베이스 생성/삭제
  • 사용자 추가/삭제
  • 테이블 구조 수정
  • 모든 데이터에 접근 가능
  • 권한 부여/회수 가능
mysql -u root -p

이 명령어는 root 권한으로 MySQL에 접속하겠다는 의미입니다. 비밀번호는 설치 시 직접 설정하거나 기본 설정값을 따릅니다.


✅ 2. 연동의 메커니즘 (FastAPI 또는 Python 입장에서)

[1] 데이터베이스 URL로 연결

Python에서 MySQL에 접속하려면 접속 정보를 문자열로 전달합니다.

예시:

DATABASE_URL = "mysql+pymysql://root:비밀번호@localhost:3306/fastapiDB"

구조:

mysql+pymysql        ← 어떤 드라이버를 쓸 것인가
root                 ← 사용자 이름
비밀번호             ← 사용자 비밀번호
localhost            ← MySQL 서버 위치
3306                 ← 기본 포트
fastapiDB            ← 연결할 데이터베이스 이름

[2] 드라이버의 역할 (pymysql)

pymysql은 Python에서 MySQL과 대화하는 통역사 역할입니다.
SQLAlchemy와 함께 자주 사용됩니다.

pip install pymysql

[3] 연동 예시 코드 (SQLAlchemy 사용 시)

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

DATABASE_URL = "mysql+pymysql://root:비밀번호@localhost:3306/fastapiDB"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(bind=engine)

✅ 3. 연동 후 실제 동작 흐름

  1. Python 코드에서 create_engine()으로 MySQL과 연결
  2. SQLAlchemy가 pymysql을 통해 MySQL 서버에 접속 시도
  3. MySQL에서 해당 사용자 계정의 권한을 검사
  4. 권한이 있으면 접속 성공
  5. 이후 session.query(), session.add() 등의 명령으로 데이터 읽고 쓰기

✅ 4. root가 아닌 사용자도 가능한가요?

네, 실제 운영 환경에서는 보안을 위해 root 대신 별도의 사용자 계정을 만들어 사용합니다:

CREATE USER 'fastapiuser'@'localhost' IDENTIFIED BY '패스워드';
GRANT ALL PRIVILEGES ON fastapiDB.* TO 'fastapiuser'@'localhost';

이제 접속 문자열은 이렇게 바뀝니다:

"mysql+pymysql://fastapiuser:패스워드@localhost:3306/fastapiDB"

✅ 요약정리

항목  설명
root MySQL 최고관리자 계정 (모든 권한 보유)
연동 URL 접속 정보를 담은 문자열
pymysql Python과 MySQL 간 통신 담당 드라이버
연동 방식 SQLAlchemy 등 ORM 라이브러리를 통해 DB 접속
운영 권장사항 root 대신 별도 사용자 생성 권장

 


FastAPI DB 연동 코딩

반응형

댓글