Django(장고) 외부 DB 연결

조회수 3137회

다른 PC 2대(A, B)에서 github으로 공유된 같은 서버코드를 동작시키려고 합니다. (테스트용)

하지만 DB는 A에만 두고 사용하고 싶습니다.

B에서 localhost로 서버를 구동시킬때 A PC의 DB를 그대로 가져오려면

B에서 어떤 세팅을 해줘야 하나요?

B PC settings.py 에서

'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'server',  
    'USER': 'kim2',    
    'PASSWORD': 'kim2',  
    'HOST': 'A PC IP',          <<----------------------
    'PORT': ""
}

B PC의 MySQL 서비스를 중지하고 Host를 A PC로 연결했더니 서버구동되지만 실제 DB에는 접속을 하지 못하네요

B PC에서 localhost:8000/admin 으로 접속하면

OperationalError at /admin/ (2003, "Can't connect to MySQL server on 'localhost' (10061)")

라는 에러가 출력됩니다.

A PC에서 하단 트레이창에서 MySQL 오른쪽 클릭해보면 localhost(online) 으로 표시되있고, Remote Management에서 SSH login based management는 따로 설정하지는 않았습니다. 기본설정으로만 MySQL이 서비스 되고있습니다.

A PC에서 외부 접속을 위해 3가지를 설정했습니다.

  1. 계정생성

    create user 'kim2'@'%' identified by 'kim2';
    grant all privileges on *.* to 'kim2'@'%';
    flush privileges;
    
  2. 포트바인딩 방화벽 인바운드/아웃바운드 3306 포트를 허용했습니다.

  3. my.ini 파일에 bind-address = 0.0.0.0 를 설정했습니다.

B PC에서

mysql - h "A PC IP' -u root -p 접속하면 테이블에서 값을 가져올수 있었습니다.

원격 접속은 되는것 같은데 django 서버에서는 접근이 안되네요..

그리고 A에서 아래의 작업을 하고나서 Github에 소스를 commit 했습니다.

  1. APP 생성
  2. 모델 생성
  3. migrate
  4. 서버구동
  5. admin접속 후 DB 입력

그리고 B에서 소스를 내려받고

  1. 서버구동
  2. admin에서 DB 연결 못함
  3. 그래서 B PC에 설치된 MySQL로 setting 변경
  4. migrate
  5. 서버구동
  6. admin 접속 후 DB 접근가능 하지만 B PC의 데이터베이스임.
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 자문자답입니다...

    서버를 계속 구동해서 캐시가 남아있어나 봅니다...

    파이참 재시작후에 서버 다시 연결하니까

    Data Sources and Drivers에 A PC의 IP로 연결됐다고 써있네요

    localhost:8000/admin 에 들어가보니

    A PC의 테이블 값 전부 다 가져오네요...

    테스트 용으로는 위의 설정대로하고

    실배포시에는 보안에 좀 더 신경써야겠습니다..

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)