해당 글에서는 Django에서 MySQL DB를 설정하는 방법을 다뤘습니다.
목차
1. MySQL 설치
2. MySQL 드라이버 설치
3. Django 설정 변경
4. 중간 마이그레이션
5. 확인
1. MySQL 설치
- 다운로드 및 설치 방법은 아래의 링크를 참조하자.
MySQL 다운로드 및 설치 방법
📌Window10에 MySQL 다운로드 및 설치 하기 1. MySQL 홈페이지 접속 MySQL 링크 주소 :
velog.io
위의 링크에 따라 MySQL을 다운로드를 완료했다면 Django와 MySql를 연결해보자.
2. MySQL 드라이버 설치
먼저 **드라이버(Driver)**란 무엇일까요? 드라이버(Driver)는 컴퓨터에서 다른 장치나 소프트웨어와 상호작용하기 위한 인터페이스를 제공하는 프로그램입니다. **데이터베이스 드라이버(Database Driver)**는 데이터베이스와 상호작용하기 위한 인터페이스를 제공하는 프로그램입니다.
즉 Django에서 MySQL을 사용하려면, MySQL과 상호작용할 수 있는 드라이버(Driver) 를 설치해야 합니다. 드라이버(Driver) 중에는 2가지 중 하나를 선택할 수 있습니다.
- **mysqlclient**
- **MySQL Connector/Python**
해당 글에서는 **mysqlclient** Driver 사용하겠습니다.
# mysqlclient를 install 합니다.
pip install mysqlclient
3. Django 설정 변경
**settings.py** 의 **DATABASES**를 수정합니다. 하지만 주의할 점이 있습니다.
- 보안
- **git**에 settings.py를 올리게 된다면 name, password가 그대로 노출되기 때문입니다. 따라서 필자는 Django 프로젝트 안에 my_settings.py 라는 임의로 정한 파일에 **DATABASES** 의 정보를 넣어주고 settings.py에 **변수**로 해당 정보를 가져왔습니다. 또한 SECRET_KEY 도 유출되면 안 되는 정보이므로 앞서 설명한 방법으로 SECRET_KEY도 저장했습니다.
- DATABASES에서의 설정 이름, 비밀번호는, MySQL이름과, 비밀번호와 동일해야 합니다.
**DATABASES** 의 이름, 비밀번호는 반드시 MySQL 에서 로그인하는 이름, 비밀번호와 동일해야 합니다. 동일하지 않다면 **error**가 발생합니다.
'''
shell 환경에서 다음과 같은 명령어를 입력하면 로그인이 가능합니다.
이때 사용되는 사용자 이름, 비밀번호를 DATABASES에 동일하게 넣어야 한다는 의미입니다.
'''
# shell 환경
mysql -u [사용자이름] -p
아래의 code는 예시입니다.
# settings.py
import my_settings
DATABASES = my_settings.DATABASES
SECRET_KEY = my_settings.SECRET_KEY
# my_settings.py(파일명은 마음데로)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '데이터베이스 이름', # MySQL dbname를 넣어야 합니다.
'USER': '사용자 이름', # MySQL username를 넣어야 합니다.
'PASSWORD': '패스워드', # MySQL password를 넣어야 합니다.
'HOST': '호스트 이름',
'PORT': '포트 번호', # mysql에서는 '3306'포트를 사용합니다.
'OPTIONS': {
'autocommit': True,
'charset': 'utf8mb4',
},
}
}
SECRET_KEY = '기존의 SECRET_KEY'
❓ 하지만 여기서 내가 name과 password를 언제 만들었지? 라는 질문이 생기셨나요?
**username**(dbname X)과 **password**는 **목차 1번 의 **MySQL 설치 에서 진행하셨습니다.
MySQL 설치를 하셨다면 아마 여러분들은 **'root'** 라는 이름의 **username**이 만들어 지셨을 거에요.
**목차 1번**의 설명대로 진행하셨다면 다음과 같은 화면을 보셨을 겁니다.
4. 중간 마이그레이션
Django 설정 변경을 성공적으로 했다면, 마이그래이션을 수행합니다.
python manage.py makemigrations
python manage.py migrate
5. 확인
sql에 로그인 해 봅시다.
mysql -u [사용자이름] -p
sql이 실행중인지 확인해 봅시다.
해당 명령어를 실행했을 때 sql의 version이 나온다면 sql이 실행 중인 것입니다.
SELECT @@version;
# 이렇게 나와요. 버전은 사용자마다 다를 수 있어요.
+-----------+
| @@version |
+-----------+
| 8.0.32 |
+-----------+
db를 생성해 봅시다.
CREATE DATABASE [db이름];
db가 잘 생성됬는지 확인해 봅시다.
SHOW DATABASES;
잘 생성됬다면 사용하고자 하는 db를 선택합니다.
USE [db이름];
runserver 을 해서 오류가 있는지 확인할 수 있습니다.
python manage.py runserver
해당 user의 권한이 없다는 error가 발생했다면 다음의 명령어를 사용합니다.
# 해당 명령어는 user에게 모든 데이터베이스와 테이블에 대한 모든 권한을 부여합니다.
GRANT ALL PRIVILEGES ON *.* TO '[사용자이름]'@'localhost';
# 해당 명령어는 권한 변경된 권한을 적용해줍니다.
FLUSH PRIVILEGES;
'''
다시 runserver를 통해 error가 발생하는지 확인합니다.
발생하지 않는다면 다음 과정으로 넘어갑니다.
'''
Django **models.py** 에서 사용하고자 하는 model을 정의하고 마이그레이션을 해 줍니다. 마이그레이션은 언제 하든 괜찮지만, 해당 글에서 2번 하는 이유는 하나의 작업이 끝난 뒤에 오류가 있는지 확인하기 위함입니다. 오류가 있다면 마이그레이션을 할때 확인할 수 있습니다.
python manage.py makemigrations
python manage.py migrate
여기까지 잘 따라 오셨다면 MySQL 설정을 완료했어요! 수고하셨습니다.ㅎㅎ 혹시 오류가 있다면 댓글을 통해 알려주세요. 감사합니다^^
댓글