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가지를 설정했습니다.
계정생성
create user 'kim2'@'%' identified by 'kim2'; grant all privileges on *.* to 'kim2'@'%'; flush privileges;
포트바인딩 방화벽 인바운드/아웃바운드 3306 포트를 허용했습니다.
my.ini 파일에 bind-address = 0.0.0.0 를 설정했습니다.
B PC에서
mysql - h "A PC IP' -u root -p 접속하면 테이블에서 값을 가져올수 있었습니다.
원격 접속은 되는것 같은데 django 서버에서는 접근이 안되네요..
그리고 A에서 아래의 작업을 하고나서 Github에 소스를 commit 했습니다.
- APP 생성
- 모델 생성
- migrate
- 서버구동
- admin접속 후 DB 입력
그리고 B에서 소스를 내려받고
- 서버구동
- admin에서 DB 연결 못함
- 그래서 B PC에 설치된 MySQL로 setting 변경
- migrate
- 서버구동
- admin 접속 후 DB 접근가능 하지만 B PC의 데이터베이스임.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
자문자답입니다...
서버를 계속 구동해서 캐시가 남아있어나 봅니다...
파이참 재시작후에 서버 다시 연결하니까
Data Sources and Drivers에 A PC의 IP로 연결됐다고 써있네요
localhost:8000/admin 에 들어가보니
A PC의 테이블 값 전부 다 가져오네요...
테스트 용으로는 위의 설정대로하고
실배포시에는 보안에 좀 더 신경써야겠습니다..
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력