Django:远程访问 PythonAnywhere MySQL 数据库

Django: remotely access a PythonAnywhere MySQL database

我在 PythonAnywhere 上有一个 Django 应用程序(Python 3.4,Django 1.7),还有一个 MySQL 数据库。 数据库在已部署的应用程序上运行良好。

但是,我无法将它连接到本地计算机上的应用程序。

当我运行 python manage.py runserver:

时抛出如下错误

django.db.utils.InterfaceError: (2003, "2003: Can't connect to MySQL server on 'mysql.server:3306' (8 nodename nor servname provided, or not known)", None)

这些是我使用的属性:

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': '<username>$<database_name>',
        'USER': '<username>',
        'PASSWORD': '<databse_password>',
        'HOST': 'pythonanywhere.com'
    }
}

我也试过 mysql.servermysql.server.pythonanywhere.com 作为 HOST 没有更多的运气。

我认为无法从远程直接连接到您的 mysqlserver 实例,出于安全原因,端口 3306 已被阻止。 他们建议通过 SSH 隧道连接,请遵循此 link
我不知道如果您可以在 Django 中执行 ssh 隧道,您可能应该编写自定义配置。在您的 PC 上安装 SSH 隧道软件,然后将您的 Django 应用程序连接到您必须选择的端口上的本地主机会更简单。
再见

根据 PythonAnyWhere 文档:

  1. 打开一个终端并运行下面的命令。

    ssh -L 3333:username.mysql.pythonanywhere-services.com:3306 用户名@ssh.pythonanywhere.com

提供您的 PAW 帐户登录密码

用您的用户名替换用户名。

  1. 打开另一个终端并运行下面的命令。

    mysql -h 127.0.0.1 --port 3333 -u 用户名 -p

提供您的 mysql 密码。在设置文件中可用。

只要您在终端 2 上工作,就保持终端 1 打开。

Accessing PythonAnyWhere MySQL from outside