PythonAnywhere에서 웹 사이트를 호스팅하고 있습니다.
서비스에 두 개의 데이터베이스가 있습니다. myusername$production
및 myusername$dev
.
프로덕션 DB는 매일 밤 자체 백업하고 최신 라이브 데이터 배치로 dev 데이터베이스를로드합니다. 유료 PythonAnywhere 고객 인 ssh를 통해 Django 개발 환경을 dev 데이터베이스에 연결하려고합니다.
나는 그들의 조언에 따라 MySQL Workbench를 다운로드했다. MySQL Workbench는 아무런 문제없이 데이터베이스에 연결된다. 그런 다음 dev.py
Django에서 다음과 같이 설정 을 시도했습니다 .
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myusername$dev',
'USER': 'myusername',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
그러나 이로 인해 django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (10061)")
오류가 발생합니다. 또한 교체 시도 127.0.0.1
로 localhost
하지만 둘 다 일 이들뿐만 아니라 모두 호스트와 포트 빈을 떠나.
그런 다음 웹 사이트에서 다른 두 가지 옵션을 시도했습니다. 즉, Python 코드를 통해 직접 db에 액세스하고 Putty (저는 Windows 10 사용자입니다)를 사용했지만 이들 중 아무것도 작동하지 않았습니다.
어떤 조언이라도 대단히 감사하겠습니다.
여기에 PythonAnywhere 개발자. 링크하는 도움말 페이지 에는 외부에서 PythonAnywhere MySQL 데이터베이스에 연결하기위한 여러 가지 옵션이 있습니다. 당신이-또는 적어도 처음에는-첫 번째와 두 번째 두 가지를 혼동하는 것처럼 들립니다.
첫 번째는 MySQL Workbench를 사용하는 것입니다. MySQL Workbench에는 공용 인터넷에서 직접 액세스 할 수없는 데이터베이스에 연결할 수 있도록 SSH 터널을 설정하는 옵션이 있습니다. 하지만 터널을 설정 한 후에는 MySQL Workbench 내에서 작업을 실행하는 경우에만 도움이됩니다. 머신에서 실행중인 다른 코드에는 영향을주지 않습니다. 따라서 Django 코드에는 도움이되지 않습니다.
두 번째 옵션은 Python 코드에서 데이터베이스에 연결하려는 경우입니다. 데이터베이스 연결이 만들어지는시기를 완전히 제어 할 수있는 SSHTunnelForwarder
경우 SQL 코드 주위 에 래퍼를 배치 할 수 있으며 해당 with
문 내에서 수행하는 모든 SQL 코드 는 데이터베이스에 연결할 수 있지만 해당 문 외부의 코드는 연결할 수 없습니다. . 따라서 Django를 사용할 때도 도움이되지 않습니다. MySQL 코드가 Django 라이브러리 내부 깊숙이 숨겨져 있고 with
명령문으로 래핑하는 것은 매우 까다로울 수 있기 때문입니다.
세 번째 옵션은 SSH 터널을 수동으로 설정하는 것이지만 안타깝게도 지침은 유닉스 환경을 대상으로합니다. Linux 또는 Mac. 그렇게하면 연결을 허용하는 로컬 머신 (IP 주소 127.0.0.1, 포트 3306)에서 서버를 시작한 다음 SSH를 통해 전달하여 Pythonanywhere 방화벽 내부로 나오고 올바른 서버로 전송됩니다. MySQL 서버. 이것은 로컬 서버가 실제로 작업을 PythonAnywhere 시스템에 전달하는 것임에도 불구하고 마치 MySQL 서버 인 것처럼 시스템에서 코드를 작성한다는 것을 의미합니다.
그래서 당신이해야 할 일은 (그리고 거의 다 된 것처럼 보입니다!) Unix 명령이 ssh
명령 으로하는 일을하도록 PuTTY를 설정하는 것이 었습니다 . 이 지침 은 거의 여러분이 원하는 것입니다. 차이점은
ssh.pythonanywhere.com
:3306
.이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다