ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Django-MySQL DB 연결하기(feat. mysqlclient )
    DataBase/MySQL 2021. 4. 23. 21:20
    728x90

    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

    댓글

Designed by Tistory.