Django:远程访问PythonAnywhere MySQL数据库

时间:2015-03-27 07:44:37

标签: python mysql django pythonanywhere

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

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

运行python manage.py runserver时会抛出以下错误:

  

django.db.utils.InterfaceError:(2003," 2003:无法连接MySQL服务器' mysql.server:3306'(提供8个节点名或服务名,或者未知)",无)

这些是我使用的属性:

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

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

2 个答案:

答案 0 :(得分:4)

我认为无法从远程直接连接到您的mysqlserver实例,出于安全原因,端口3306被阻止。 他们建议通过SSH隧道连接,按照link进行连接。
我不知道如果你可以在Django中进行ssh隧道,你应该写一个自定义配置。在您的PC上安装SSH隧道软件然后将Django应用程序连接到端口上的localhost是很简单的。您必须选择。
再见

答案 1 :(得分:1)

根据PythonAnyWhere文档:

  1. 打开终端并运行以下命令。

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

  2. 提供您的PAW帐户登录密码

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

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

      mysql -h 127.0.0.1 --port 3333 -u username -p

    2. 提供您的my​​sql密码。可在设置文件中使用。

      只要您在终端2上工作,

      保持终端1打开。

      Accessing PythonAnyWhere MySQL from outside