2017-05-28 2 views
0

Kurze Frage - Wie stelle ich eine Verbindung zu einer bestehenden Amazon Web Services-MySQL-Datenbank aus meiner Django-Webentwicklungs-App her?Wie verbinde ich die Django-Web-App für die Entwicklungsstufe mit einer vorhandenen AWS MySQL-Datenbank?

Kontext:

ich auf die Schaffung einer Webseite arbeite die Django-Framework.

Ich habe erfolgreich eine AWS MySQL RDS Datenbank erstellt und meine Daten erfolgreich importiert und erfolgreich über MySQL Workbench verbunden.

Ich bin jetzt an einem Punkt, wo ich versuche, von meiner Django App Verbindung zur Datenbank herzustellen. Ich benötige schreibgeschützte Funktionalität von der Datenbank aus der App ... Ich werde keine neuen Informationen in die Datenbank schreiben. Außerdem versuche ich dies in einer Entwicklungsumgebung zu tun, da ich noch nicht einmal in der Lage bin, etwas Produktionswürdiges zu machen (dh ich arbeite lokal von meinem Laptop aus).

Ich habe die AWS-Datenbankinformationen zu meiner Django-Datei settings.py hinzugefügt und basierend auf meinen Nachforschungen, um die erforderlichen Modelle zu generieren, muss ich Djangos Dienstprogramm 'inspectdb' verwenden. Ich habe das versucht, und der resultierende Fehler erhalten war:

django.db.utils.OperationalError: (1045, u "Zugriff verweigert für Benutzer '[mein Benutzername war hier, die tatsächlich zeigte meinen literalen Vornamen eher als jede Art von Benutzernamen, die von AWS] ‚@‘ pool- [meine IP-Adresse war hier] .nwrknj.fios.verizon.net‘

hat jemand anderes erlebt dieses Problem und identifiziert eine Lösung hergestellt wurde?

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    }, 
    '[removed]': { 
      'NAME': '[removed]', 
      'ENGINE': 'django.db.backends.mysql', 
      'USERNAME': '[removed]', 
      'PASSWORD': '[removed]', 
      'HOST': '[removed].us-west-2.rds.amazonaws.com', 
      'PORT': '3306' 
+0

Können Sie eine anoymised Version Ihrer Datenbankeinstellungen so stellen, dass wir überprüfen können? – Withnail

+0

Sicherlich, siehe unten (sorry, nicht sicher, wie die Einstellungen im Kommentarfeld zu formatieren): DATABASES = { 'default': { 'MOTOR': 'django.db.backends.sqlite3', ' NAME ': os.path.join (BASE_DIR,' db.sqlite3 '), }, ' [entfernt] ': { ' NAME ':' [entfernt] ', ' ENGINE ':' django.db. backends.mysql ', ' USERNAME ':' [entfernt] ', ' KENNWORT ':' [entfernt] ', ' HOST ':' [entfernt] .us-west-2..r.samazonaws.com ', 'PORT': '3306' – abiero

+0

Update - Ich habe die DB-Einstellungen zu der ursprünglichen Frage hinzugefügt, anstatt im Kommentar zu posten. Vielen Dank! – abiero

Antwort

0

Es sei denn, Sie haben DATABASE_ROUTERS festgelegt, um eine alternative Datenbank zu verwenden, wird alles in Django die default Datenbank verwenden. Entfernen Sie den aktuellen ENGINE und NAME in der Standardeinstellung und verschieben Sie alle [removed] db-Informationen in default.

Stellen Sie außerdem sicher, dass der AWS RDS-Port 3306 für Ihre FIOS-IP-Adresse offen ist. Im Idealfall würden Sie es in AWS auf nur die tatsächlichen Server beschränken (ob in AWS oder anderswo), aber für den Augenblick müssen Sie möglicherweise einen breiten IP-Bereich festlegen, damit sich Ihre FIO-IP während der Entwicklung regelmäßig ändert.

+0

Danke, ich werde auf Router nachlesen und geben Sie das eine Chance. – abiero

+0

Ganz im Gegenteil. Sie benötigen nur Router, wenn Sie tatsächlich mehrere Datenbanken innerhalb Ihrer Django-Anwendung haben. Wenn Sie nur eine Datenbank haben, wie es scheint, verschieben Sie einfach die Anmeldeinformationen auf "default" und Sie sollten alle eingestellt sein. – manassehkatz

+0

Es stellte sich heraus, dass ich die falsche Syntax für die Angabe der Datenbankeinstellungen verwendete. Ich änderte "USERNAME" zu "USER" und alles funktionierte wie ein Charme. – abiero

Verwandte Themen