Back-End/Django

[Django project #2] conda + Django + mysql 개발 환경 구축하기 (2) for Mac

Henu 2021. 4. 28. 14:05
 

[Django project #1] conda + Django + mysql 개발 환경 구축하기 (1) for Mac

1. Mac 에서 conda 가상환경 설치하기 1) conda 설치하기 Anaconda | Individual Edition Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning..

hyeo-noo.tistory.com

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연결해보기 였습니다

잘못된 정보가 있을 시 피드백 해주시면 감사하겠습니다ㅎㅎ