[Django] Django 애플리케이션을 MySQL 서버에 연결

5644 단어 djangomysql
최근에 Django 프로젝트를 MySQL 서버에 연결하는 데 어려움을 겪고 있었습니다. 문제가 무엇인지 찾기가 매우 어려운 몇 가지 미묘한 설정이 있습니다. 게다가 Django 공식 사이트에서 제공하는 설명이 좀 산만하고, 내 할일 목록을 확인하기 위해 모여야 하는 번거로움이 조금 있었습니다.

보다:
  • https://docs.djangoproject.com/en/4.0/intro/tutorial02/
  • https://docs.djangoproject.com/en/4.0/topics/install/#database-installation
  • https://docs.djangoproject.com/en/4.0/ref/settings/#std:setting-DATABASES

  • 예, 적어도 세 개는 내용이 다른 거의 동일한 주제를 설명합니다.

    그럼에도 불구하고 결국 그 링크에서 주어진 설명에 따라 만들었습니다. 그렇다면 동일한 방법이 MySQL 서버에 접속을 시도하는 루트 사용자가 아닌 특정 사용자에게만 통할 수 있을까 하는 생각이 들었습니다.

    다음은 임의로 구성된 사용자에 대해서도 작동함을 보여줍니다. 공식 Django 사이트와 MySQL dev 사이트의 지시를 엄격히 따랐습니다.


    1) 우선, 이미 Django 프로젝트가 있고 컴퓨터에 MySQL 서버가 설치되어 있다고 가정합니다.

    2) MySQL 프롬프트에서 다음 명령을 차례로 입력합니다. 물론 , , , , , 는 내가 선택한 것이고 당신은 당신의 것을 자유롭게 선택할 수 있습니다.

    CREATE DATABASE test;
    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
    GRANT INDEX, ALTER, REFERENCES, SELECT, INSERT, UPDATE, DELETE ON test.* TO 'username'@'localhost';
    


    예. Django가 MySQL 서버에 연결하기 전에도 처음부터 자신의 DB(테스트)와 사용자(사용자 이름)가 있어야 합니다. 그런 다음 사용자에게 자신의 역할에 대한 여러 권한이 부여됩니다.

    (수정됨) 테스트를 위해 Django는 순수 테스트용 데이터베이스를 자동으로 생성합니다. 이를 위해 사용자에게 테스트용 데이터베이스를 생성하고 삭제할 수 있는 추가 권한을 부여합니다.

    GRANT CREATE, DROP, INDEX, ALTER, REFERENCES, SELECT, INSERT, UPDATE, DELETE ON test_test.* TO 'username'@'localhost';
    

    CREATEDROP 의 두 가지 추가 권한이 있음을 알 수 있습니다. DROP는 테스트가 종료되어 데이터베이스가 더 이상 필요하지 않은 경우를 위한 것입니다. test_<your_database_name>는 Django가 테스트용 임시 데이터베이스의 기본 이름을 지정하는 것입니다. 하지만 settings.py에서 사용자 지정 이름을 설정할 수 있습니다.

    3) 이제 Django 프로젝트로 이동합니다. 프로젝트 설정이 지정된 settings.py에서 DATABASE 사전을 찾아 아래와 같이 변경합니다.

    # config/settings.py
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'test',
            'USER': 'username',
            'PASSWORD': 'password',
            'HOST': 'localhost'
            'PORT': '3306
        }
    }
    
    


    4)마지막으로 Django 프로젝트와 MySQL 서버를 바인딩하는 mysqlclient를 설치한다.

    설치: link

    5) 이제 연결이 잘 되는지 테스트합니다.
    루트 디렉토리에 명령을 입력하십시오.
    터미널에서 MySQL 서버로의 데이터 마이그레이션이 잘 구현되었는지 확인합니다.

    python3 manage.py migrate
    




    제대로 작동하는 것 같습니다!

    명령 참조:
  • https://dev.mysql.com/doc/refman/8.0/en/grant.html
  • 좋은 웹페이지 즐겨찾기