Django는 기본적으로 python에서 지원해주는 sqlite를 DB로 사용하도록 default 세팅이 되어있습니다.

 

하지만 장기적으로 프로젝트를 진행한다면 다른 DB로 변경해줄 필요가 있으므로 해당 작업을 진행하겠습니다.

 

 

 

0. mysql과 django에 대한 기본 필요 설명

 - Django는 MySQL 5.6 이상의 버전에서만 지원됩니다.

 - Django의 inspectdb기능은 information_schema모든 데이터베이스 스키마에 대한 자세한 데이터를 포함하는 데이터베이스를 사용합니다.

 - Django는 데이터베이스의 유니 코드(UTF-8 인코딩)를 지원합니다.

 - MySQL에는 여러 스토이지 엔진이 있고, 서버 구성에서 기본 저장소 엔진을 변경할 수 있으나 기본 저장소 엔진은 InnoDB입니다.

 - InnoDB 엔진은 완전 트랜잭션 방식이며 외부 키 참조를 지원합니다.

 - InnoDB autoincrement 카운터는 MySQL을 재시작 할 때 AUTO_INCREMENT값을 기억하지 못하기 때문에 "max (id) +1"로 다시 생성됩니다. 이로 인해 관리자가 예상하지 못한 AutoField 값의 재사용이 발생할 수 있습니다.

 - MyISAM 의 주요 단점은 트랜잭션을 지원하지 않거나 외래 키 제약 조건을 적용한다는 것입니다.

 - Django는 mysqlclient 1.3.13 이상의 버전을 필요로 합니다.

 

 

1. mysql 설치

sudo apt-get update

sudo apt-get install mysql-server

sudo apt-get install mysql-client

sudo apt-get install python3-dev libmysqlclient-dev

sudo pip3 install ConfigParser

sudo pip3 install mysql-python

 

 

 

2. mysql root password

mysql -u root -p

 >> SET PASSWORD = PASSWORD('root_passwd')

 ( ex. SET PASSWORD = PASSWORD('testpasswd123') )

 

 

 

3. mysql에서 특정 DB의 모든 테이블과 열이 기본적으로 UTF-8을 사용하도록 설정

mysql -u root -p

 >> CREATE DATABASE <dbname> CHARACTER SET utf8;

 

 

 

4. Django 관련 mysql 세팅 설정

mysql -u root -p

 >> SET GLOBAL validate_password_policy=LOW;

( 추가TIP!!! : 해당 명령어는 임시로 적용되니 서버 재부팅 혹은 mysqld restart시 다시 MEDIUM으로 돌아갑니다! )

CREATE DATABASE DB이름;

CREATE USER '사용자'@'localhost' IDENTIFIED BY '비밀번호';

GRANT ALL PRIVILEGES ON DB이름.* TO '사용자'@'localhost' IDENTIFIED BY '비밀번호';

 ( DB서버에 django가 올라가므로 위와 같이 localhost로 세팅 )

systemctl restart mysql

 

 

 

5. setting.py 파일의 DataBase 항목 수정

vim test001/settings.py 

===============================

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '데이터베이스이름',
        'USER': '사용자',
        'PASSWORD': '비밀번호',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

===============================

 ( DB서버에 django가 올라가므로 위와 같이 localhost로 세팅 )

 

 

 

6. ./manage.py runserver 0:8000

Error Log 출력 없는지 확인하여 없으면 정상으로 판단 -> 있는 경우 해결 필요

 

 

+ Recent posts