DataBase/MySQL

Django-MySQL DB 연결하기(feat. mysqlclient )

쫄보삽질러 2021. 4. 23. 21:20

Django에는 기본 내장 DB인 Sqlite가 있지만, 이는 간단한 DB(?)로 활용하기 위한 것으로

좀 더 큰 규모의 프로젝트를 진행하기 위해서 MySQL을 연동해서 사용할 수 있습니다.

 

 

먼저, Django에서 MySQL을 사용하기 위해서는 mysqlclient라는 라이브러리를 설치해야 합니다.

하지만 다음과 같은 설치 권한 문제로 인한 오류가 발생했습니다.

설치 권한 문제 해결

ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/3.8'
Consider using the `--user` option or check the permission

이를 다음의 명령어로 --user 부분을 추가하여 해결할 수 있습니다.

$ python3 -m pip install --user mysqlclient 

mysqliclient 정상 설치

Django settings.py 설정 변경하기

다음으로 Django settings.py에 있는 DATABASES 부분을 수정해 주어야 합니다.(대략 80번째 줄 쯤..?)

DATABASES = {
    'default': {
    	# django db를 mysql로 사용하겠음
        'ENGINE': 'django.db.backends.mysql',
        # DB 이름 지어주기
        'NAME': 'mytable',
        # 사용자 유저 계정 생성 후 입력하기
        'USER': 'root',
        # 사용자 비밀번호 생성 후 입력하기
        'PASSWORD': 'password',
        # default host인 localhost
        'HOST': 'localhost',
        # MySQL default 포트 번호
        'PORT': '3306',
    }
}

 

여기까지 하고 DB migration을 진행하면 MySQL을 정상 연결할 수 있습니다.

$ python manage.py make migrations
$ python manage.py migrate

아래는 추가적인 오류 해결 삽질 기록입니다.

 

MySQL 서버 실행 오류

MySQL을 DB로 사용하기 위해서는 서버를 먼저 실행해줘야 하는데, 실행하지 않고 백엔드를 실행하면 다음과 같은 오류가 발생합니다:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
# mysql 서버 실행하기
$ mysql.server start

 

Django-admin 경로 오류

zsh: command not found: django-admin

=> 위와 같은 에러 메세지가 나오면 django-admin에 대한 경로설정이 필요합니다.

# 해당 경로에서 django-admin 위치 확인
~/Library/Python/3.8/bin/django-admin
# django-admin 경로 설정 해주기
$ sudo ln -s ~/Library/Python/3.8/bin/django-admin /usr/local/bin

 

MySQL 사용자 추가

# mysql 서버 실행 후

mysql> use mysql

mysql > create user 사용자이름@localhost identified by '비밀번호';

 

 

- 이상 오늘의 삽질일기 끝!

 


여기저기 삽질도 해보고

날려도 먹으면서

배우는 게

결국 남는거다

- Z.Sabziller

반응형