2017-06-02 2 views
0

Ich habe in PythonAnywhere eine Umgebung mit einer einfachen Datenbank (new_db) eingerichtet, die alle Anleitungen und Lernprogramme enthält.PythonAnywhere-Fehler beim Zugriff auf die MySQL-Datenbank (Zugriff verweigert)

Ich habe eine einfache Python Flask-App, die auf die Datenbank zu verbinden versucht, mit dem folgenden Code:

from flask import Flask, render_template, request, redirect, url_for 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config["DEBUG"] = True 

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
    username="WazzalJohn", 
    password="my_password_here", 
    hostname="WazzalJohn.mysql.pythonanywhere-services.com", 
    databasename="WazzalJohn$new_db>", 
) 
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI 
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299 
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True 

db = SQLAlchemy(app) 

Aber ich erhalte immer die Fehlermeldung:

ProgrammingError: (mysql.connector.errors .ProgrammingError) 1044 (42000): Zugriff verweigert für Benutzer 'WazzalJohn' @ '%' zur Datenbank 'WazzalJohn $ new_db>'

Ich habe versucht, eine neue Datenbank zu erstellen, bekomme aber das gleiche Problem. Ich dachte, dass PythonAnywhere alle diese Arten von Problemen behandelt, also weiß nicht, was zu tun ist ... hat jemand das gleiche Problem speziell auf PythonAnywhere?

Ich habe jetzt einloggen durch eine BASH Konsole und bekam ähnliche Meldung versucht - Screenshot ist here

+0

Der Screenshot ist von einem völlig neuen Benutzer, den ich wieder in PythonAnywhere mit einer anderen E-Mail-Adresse erstellt habe - immer noch kein Glück! – WazzalJohn

Antwort

0

In Ihrem ursprünglichen Code, haben Sie einen Fehler in dem Datenbanknamen:

databasename="WazzalJohn$new_db>", 

. ..should sein:

databasename="WazzalJohn$new_db", 

... ohne extra ">".

Das Problem auf dem Screenshot ist, dass Sie keine Datenbank in der Befehlszeile angeben; Sie müssen so etwas wie zu tun:

mysql -u TWarren -h TWarren.mysql.pythonanywhere-services.com -p 'TWarren$default' 

... wo ‚TWarren$default‘ mit dem tatsächlichen Datenbanknamen ersetzt werden soll. Die einfachen Anführungszeichen um den Datenbanknamen sind wichtig, BTW - wenn Sie sie nicht verwenden, interpretiert Bash "$default" als Umgebungsvariable und mysql wird versuchen, eine Verbindung zur falschen Datenbank herzustellen.

+0

vielen Dank Giles. Ich glaube nicht, dass ich das vermisst habe. fühle mich peinlich, aber danke, dass du mir hilfst, ich schätze es wirklich. – WazzalJohn

+0

Kein Problem, froh zu helfen :-) –

Verwandte Themen