MySQL세팅을 완료 했으니 Django에 MySQL 데이터베이스를 적용해보자!
사실 데이터 베이스 적용은 개발이 완료되고, 배포 전에 데이터의 사이즈를 고려해서 정한다고 하는데..
어차피 나중에 할 거 지금 미리 연습해 보았다!
연습하다가 연결 도중 발생할 수 있는 에러란 에러는 다 발생해서 너무 힘들었음..진짜
Django 에서 데이터베이스 설정 변경
INSTALLED_APPS = [
'quantDB', <- 여기 내가 만든 앱 추가
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
👇
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db이름',
'USER': '사용자이름(기본은 root)',
'PASSWORD': '패스워드',
'HOST': 'localhost',
'PORT':'8000',
}
}
위와 같이 설정 해준다
그리고 터미널에
(venv) python manage.py makemigrations
(venv) python manage.py migrate
위 코드를 순서대로 입력해 django의 기본 모델들을 데이터베이스에 마이그레이션 해준다
여기서 수상한 오류가 뜨는 사람이 분명히 있을 것이다!
'caching_sha2_password'
오류에 위와 같은 글자가 보인다면
MySQL이 8.0이상 버전에서는 패스워드를 sha2방식으로 암호화 하기 때문에
django가 새로운 암호화를 이해하지 못해 데이터베이스에 접근을 하지 못하기 때문이다
mysql> ALTER USER '사용자이름'@'localhost' IDENTIFIED WITH mysql_native_password BY '비밀번호';
그래서 위와같이 native_password 방식으로 비밀번호를 재설정 해주면 문제가 해결될 것이다!
그런데 여기서 비밀번호를 재설정하려는데
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
위와 같은 오류가 또 생길 수 있다
이유는 '비밀번호' 에 입력한 비밀번호가 현재 MySQL의 비밀번호 정책에 맞지 않기 때문이다 (그냥 더 어렵게 하라는 의미)
그래서 현재 비밀번호 정책이 어떻게 되어있는지 확인해 보자
mysql> SHOW VARIABLES LIKE 'validate_password%';
아마 다른 분들은 조회를 해보면 7 rows in set으로 나오지 않을까 싶습니다(제껀 중복이 있어서..)
보면 validate_password_policy = MEDIUM 도 있고 validate_password_special_char_count = 1 도 있고 다양한 비밀번호 설정들이 저장되어 있다
mysql> SET GLOBAL validate_password_policy=LOW;
이런 식으로 비밀번호 정책들을 모두 원하는 대로 변경할 수 있다
나는 그냥 기본 설정 건드리지 않고 MySQL이 원하는 어려운 비밀번호를 설정해 주었다..
이제 비밀번호를 native_password로 설정 -> sha2 caching 에러를 해결했으니 다시 마이그레이션을 해보면 잘 될것이다!
이상 MySQL과 Django연결해보기 였습니다
잘못된 정보가 있을 시 피드백 해주시면 감사하겠습니다ㅎㅎ
'Back-End > Django' 카테고리의 다른 글
[Django] ORM 쿼리 최적화 (select_related, annotate, aggregates) (0) | 2021.10.11 |
---|---|
[Security] XSS(Cross Site Scripting) 취약점 Django (0) | 2021.09.02 |
[Django] Google 소셜 로그인 (OAuth2.0) (13) | 2021.09.02 |
[Django] 회원정보 모델 설계 UserModel design #1 (0) | 2021.05.17 |
[Django project #1] conda + Django + mysql 개발 환경 구축하기 (1) for Mac (2) | 2021.04.26 |