gpt4 book ai didi

mysql - 使用 Workbench 将 Django 连接到远程 MySQL 数据库

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:21 26 4
gpt4 key购买 nike

我在 PythonAnywhere 上托管我的网站。

我在服务上有两个数据库:myusername$productionmyusername$dev

生产数据库每晚都会 self 备份,并使用最新一批实时数据加载开发数据库。我正在尝试通过 ssh 将我的 Django 开发环境连接到开发数据库,​​作为付费的 PythonAnywhere 客户这是可能的。

I followed their advice并下载了 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',
}
}

然而,这会导致 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 开发者在这里。 The help page that you link to有几个不同的选项用于从外部连接到 PythonAnywhere MySQL 数据库;听起来您 - 或者至少最初是 - 混淆了第一个和第二个。

首先是使用MySQL Workbench。 MySQL Workbench 具有设置 SSH 隧道的选项,以便您可以连接到无法直接从公共(public) 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 命令执行的操作。 These instructions几乎是你想要的;差异将是

  • “SSH 网关”将是 ssh.pythonanywhere.com
  • “源端口”为 3306。
  • 您的 PythonAnywhere MySQL 数据库主机名称的“目标地址”(来自“数据库”选项卡),后跟 :3306

关于mysql - 使用 Workbench 将 Django 连接到远程 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com