1. 개발 실행 환경

더보기
구분 항목 내용
운영체제 OS Windows 권장 (Malgun Gothic 기본 폰트 사용)
Linux / macOS 가능 (폰트 변경 필요)
개발 언어 Language Python 3.11 이상 권장
GUI 프레임워크 GUI PySide6 (Qt for Python)
데이터베이스 DBMS MySQL Server (Local) or AWS RDS(MySQL 8.x)
DB 연결 방식 Driver mysql-connector-python

 

2. 필수 설치 항목

더보기

 

3. DB 접속 환경

더보기

DB 관련 학습이 진행되었다면, DB 학습과정에서 고려하지 않은

DB 접속 정보 보안 설명을 위해 현재 단계에서 살펴본 후 이해한다.

 

항목 
Host localhost
User root
Password 1234
Database library_db
설정 위치 db/config.py
  • db/config.py
    • DB_CONFIG 딕셔너리로 접속 정보 관리
    • host/user/password/database를 하드코딩(학습용 단순 구조)

 

4. DB 접속 정보 보안 (필수!!)

더보기

4.1 문제 상황

DB_CONFIG = {
    "host": ""database-1.____.ap-northeast-2.rds.amazonaws.com", 
    "user": "admin",
    "password": "비밀번호는_여기에",
    "database": "library_db"
}
  • GitHub 업로드 시, 데이터베이스 IP, ID, PW 즉시 노출
  • 실제 서비스 환경에서는 심각한 보안 사고로 이어짐

 

 

4.2 원칙 1. DB 비밀번호는 소스 코드에 직접 넣지 않는다

  • 코드 파일은 언제든 공유될 수 있다는 전제 필요

 

 

4.3 원칙 2. 설정 파일 분리 또는 환경변수 사용

  •  config.py 분리(입문자용)
    • .gitignore에 반드시 추가
# config.py 분리

DB_CONFIG = {
    "host": "******",
    "user": "******",
    "password": "******",
    "database": "library_db"
}

 

 
# main.py 사용 예시

from config import DB_CONFIG

# ...

class DatabaseManager:
    def connect(self):
        return mc.connect(**DB_CONFIG)

 

  • .env 분리
    • .env 파일은 Git에 절대 업로드하지 않음
    • .gitignore에 반드시 추가
# [1] .env 파일 예시

DB_HOST=database-1.cp_ _ _ _4.ap-northeast-2.rds.amazonaws.com
DB_USER=admin
DB_PASSWORD=비밀번호
DB_NAME=library_db
# [2] 필요한 라이브러리 설치
pip install python-dotenv
# [3] Python 코드에서 환경변수 읽기

from dotenv import load_dotenv
import os

load_dotenv()

DB_CONFIG = {
    "host": os.getenv("DB_HOST"),
    "user": os.getenv("DB_USER"),
    "password": os.getenv("DB_PASSWORD"),
    "database": os.getenv("DB_NAME")
}

 

  

4.4 DB 계정의 <권한> 최소화 원칙

  • 학습용 DB 계정 권한 예시:
    • SELECT
    • INSERT
    • UPDATE
    • DELETE
  • 불필요한 권한:
    • DROP
    • ALTER
    • CREATE USER
    • GRANT

* 실수 한 번으로 전체 DB를 날릴 수 있다는 점을 명확히 인식할 것