简体   繁体   中英

Django: remotely access a PythonAnywhere MySQL database

I have a Django app (Python 3.4, Django 1.7) on PythonAnywhere, along with a MySQL database. The database is working fine on the deployed app.

However, I cannot get to connect it to the app on my local machine.

The following error is thrown when I run 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)

These are the attributes I use:

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

I have also tried mysql.server and mysql.server.pythonanywhere.com as HOST without any more luck.

I think It's not possible to connect directly to your mysqlserver instance from remote, for security reason, the port 3306 is blocked. They suggest to connect through SSH Tunnel, follow this link .
I don't know If you can do an ssh tunnelling within Django, You should probably write a custom configuration. It's simpler to install an SSH Tunnel software on your PC and then connect your Django App to localhost on a port You have to choose.
Bye

As per PythonAnyWhere documentation :

  1. Open a terminal and run below command.

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

provide your PAW account login password

replace username with your username.

  1. Open another terminal and run below command.

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

provide your mysql password. Available in settings file.

keep terminal 1 open as long as you are working on terminal 2.

Accessing PythonAnyWhere MySQL from outside

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM