DDi*_*ran 2 mysql database django ssh
我在 PythonAnywhere 上托管我的网站。
我的服务有两个数据库:myusername$production和myusername$dev。
生产数据库每晚都会进行自我备份,并使用最新一批实时数据加载开发数据库。我正在尝试通过 ssh 将我的 Django 开发环境连接到开发数据库,这作为付费 PythonAnywhere 客户是可能的。
我听从了他们的建议并下载了 MySQL Workbench,它可以毫无问题地连接到所述数据库。然后我尝试在 Django 中设置我的dev.py设置,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myusername$dev',
'USER': 'myusername',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
Run Code Online (Sandbox Code Playgroud)
然而这会导致django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (10061)")错误。我还尝试替换127.0.0.1为localhost,并将主机和端口留空,但这些都不起作用。
然后我在他们的网站上尝试了其他两个选项,即通过 python 代码直接访问数据库,以及使用 Putty(我是 Windows 10 用户),但是这些都不起作用。
任何建议将不胜感激。
PythonAnywhere 开发在这里。 您链接到的帮助页面有几个不同的选项,用于从外部连接到 PythonAnywhere MySQL 数据库;听起来你——或者至少最初是——混淆了前两者。
第一个是使用 MySQL Workbench。MySQL Workbench 具有用于设置 SSH 隧道的选项,以便您可以连接到无法从公共 Internet 直接访问的数据库。但是,一旦您设置了该隧道,它仅在您在 MySQL Workbench 中运行内容时才有用——它不会影响您在计算机上运行的其他代码。所以它对 Django 代码没有帮助。
第二个选项是当您想要从 Python 代码连接到数据库时。如果您可以完全控制何时建立数据库连接,则可以将SSHTunnelForwarder包装器放在 SQL 代码周围,并且您在该with语句内执行的任何 SQL 代码都将能够连接到数据库,但该语句之外的代码则无法连接到数据库。因此,当您使用 Django 时,这也没有帮助,因为它的 MySQL 代码隐藏在 Django 库的深处,用语句包装它with会非常棘手。
第三个选项是手动设置 SSH 隧道,但不幸的是,这些说明是针对 Unix 环境的——例如。Linux 或 Mac。当您这样做时,它会在您的本地计算机上启动一个服务器(IP 地址 127.0.0.1,端口 3306),该服务器接受连接,然后通过 SSH 转发它们,以便它们在 Pythonanywhere 防火墙内出现并发送到正确的地址。 MySQL 服务器。这意味着本地服务器看起来在您的计算机上进行编码,就好像它是 MySQL 服务器一样,即使它实际上只是将工作移交给 PythonAnywhere 计算机。
因此,您需要做的(看起来您几乎已经完成了!)是设置 PuTTY 来执行 Unix 指令对命令执行的操作ssh。 这些说明几乎就是您想要的;差异将是
ssh.pythonanywhere.com:3306.| 归档时间: |
|
| 查看次数: |
4684 次 |
| 最近记录: |