유틸리티/Web Programing

[Django] 데이터베이스를 MySQL로 변경

easyfly 2025. 5. 4. 17:01
반응형

리눅스 환경에서 Django 프로젝트의 데이터베이스를 MySQL로 변경하는 전체 과정을 아래와 같이 정리해 드립니다.


✅ 1. MySQL 서버 설치 (Ubuntu 기준)

sudo apt update
sudo apt install mysql-server

설치 후 MySQL을 보안 설정합니다:

sudo mysql_secure_installation


✅ 2. MySQL 데이터베이스와 사용자 생성

MySQL에 접속:

sudo mysql -u root -p

MySQL 명령어로 아래를 실행:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

✅ 3. MySQL Python 연동 패키지 설치

Django에서 MySQL을 사용하려면 mysqlclient 패키지가 필요합니다:

sudo apt install python3-dev default-libmysqlclient-dev build-essential
pip install mysqlclient

✅ 4. Django 설정 파일(settings.py) 수정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',  # 위에서 만든 DB 이름
        'USER': 'myuser',  # 사용자 이름
        'PASSWORD': 'mypassword',  # 비밀번호
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}

※ 보안을 위해 .env 파일 사용을 권장합니다 (뒤에서 설명).


✅ 5. 마이그레이션 및 서버 실행

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

정상 작동하면 MySQL 데이터베이스가 연결된 것입니다.


🔐 옵션: .env 파일로 DB 정보 관리 (보안 강화)

  1. .env 파일 생성:
DB_NAME=mydb
DB_USER=myuser
DB_PASSWORD=mypassword
DB_HOST=localhost
DB_PORT=3306
  1. 패키지 설치:
pip install python-decouple
  1. settings.py에 적용:
from decouple import config

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': config('DB_NAME'),
        'USER': config('DB_USER'),
        'PASSWORD': config('DB_PASSWORD'),
        'HOST': config('DB_HOST'),
        'PORT': config('DB_PORT'),
    }
}

✅ 확인 방법

MySQL CLI에서 다음 명령어로 테이블 확인:

mysql -u myuser -p
USE mydb;
SHOW TABLES;

.

'유틸리티 > Web Programing' 카테고리의 다른 글

phpMyAdmin 설치 방법과, mysqli, PDO 코드 예제  (0) 2025.06.03
php-mysql 설치  (0) 2025.06.02
PHP와 Apache만 별도 설치  (1) 2025.06.01
Flask 서버를 실행 상태로 유지  (0) 2025.05.23
MySQL과 MariaDB 비교  (0) 2025.05.22