Django:远程访问PythonAnywhere的MySQL数据库

3
我有一个Django应用程序(Python 3.4,Django 1.7),在PythonAnywhere上,以及一个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,但没有更多的运气。

3个回答

5

出于安全考虑,远程直接连接到您的mysql服务器实例是不可能的,端口3306被阻止。 他们建议通过SSH隧道进行连接,请参考此链接
我不知道是否可以在Django中进行ssh隧道,您可能需要编写自定义配置。更简单的方法是在您的PC上安装SSH隧道软件,然后将您的Django应用程序连接到您选择的某个本地端口。
再见


3
根据PythonAnyWhere文档:
1. 打开终端并运行以下命令。 ssh -L 3333:username.mysql.pythonanywhere-services.com:3306 username@ssh.pythonanywhere.com
请提供您的PAW帐户登录密码
将username替换为您的用户名。
2. 打开另一个终端并运行以下命令。 mysql -h 127.0.0.1 --port 3333 -u username -p 请提供您的mysql密码。在设置文件中可用。
只要您在终端2上工作,就请保持终端1开启。 从外部访问PythonAnyWhere MySQL

这个答案晚了两年,但应该被接受。 - Al Martins

0

只有付费账户才有权限访问远程MySQL数据库


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接