Django Framework - MySQL

이제일·2021년 1월 12일
0

Django

목록 보기
10/15
post-thumbnail

MySQL

django에서는 SQLite가 기본적으로 제공하고 있지만 실제로 서비스하기에는 부적합하기에 만만한 MySQL로 바꾸도록 하자.

MySQL - 설치

먼저 MySQL의 설치는 리눅스 환경에서의 설치

$ pip install mysql-server

파이썬에서는 mysqlclient라는 라이브러리를 통해 MySQL과 DB를 연동할 수 있기 때문에 추가적으로 설치해야한다.

$ pip install mysqlclient

mysqlclient 설치중 에러
본인은 아래와 같이 에러가 떴다(egg_info error)
이유는 굳이 찾아보지않았지만 구글링결과 libmysqlclient-dev를 설치함으로써 해결했다.

sudo apt-get install libmysqlclient-dev

MySQL - 실행

$ service mysql start

MySQL - settings.py

SQLite -> MySQL로 바뀌었으니 설정을 바꿔야한다.

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql', # 사용할 엔진 설정, mysql로 바꿔준다
        'NAME': 'test',                       # 사용할 DB 이름
        'USER': 'test',                       # User ID
        'PASSWORD': 'test',                   # User Password 
        'HOST': 'localhost',                  # 접속 IP
        'PORT': '3306',                       # 접속 Port (default:3306)
    }
}

SECRET_KEY와 마찬가지로 외부 파일로 빼서 관리하는 것이 보안에 이롭다.

MySQL - 유저설정

root 유저로 mysql 접속해서 사용할 데이터베이스를 만든다.

$ create database DB이름; 

이를 사용하게할 유저(test) 를 만든다.

$ create user '유저ID' identified by '비밀번호';
  • 비밀번호를 설정 안하면 유저로 접속시 에러가 생길 수 있다.
  • 접속할 특정 ip를 지정하려면 'test'@'접속ip(localhost, ...)' 로 지정한다.

유저의 권한 지정 (아래 코드는 해당DB의 모든(*) 테이블에 모든 권한을 준다.)

$ grant all privileges on DB이름.* to '유저ID'; #해당DB의 모든(*) 테이블에 모든 권한을 준다.
$ grant select on DB이름.* to '유저ID'; # select 권한만 준다.

유저 접속 (콘솔)

$ mysql -u 유저이름 -p
$ 비밀번호 입력

MySQL - 적용

데이터베이스를 사용하기위해 models.py를 수정하고 이를 적용하기위해 migrate를 한다.

$ python3 manage.py makemigrations # 초기 파일 만들기
$ python3 manage.py migrate
profile
세상 제일 이제일

0개의 댓글