2012-04-16 4 views
12

Ich habe angefangen, mit django zu arbeiten, und hier ist der Fehler auf 'runserver' nach dem Einrichten 'DATABASES' in settings.pymysql_exceptions.OperationalError: (1045, "Zugriff verweigert für Benutzer 'root' @ 'localhost' (mit Passwort: YES)")

mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)") 

Mein settings.py Teil des Codes:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': 'my_site',      # Or path to database file if using sqlite3. 
     'USER': 'root',      # Not used with sqlite3. 
     'PASSWORD': 'root',     # Not used with sqlite3. 
     'HOST': '',      # Set to empty string for localhost. Not used with sqlite3. 
     'PORT': '',      # Set to empty string for default. Not used with sqlite3. 
    } 

} 

ich erstellt habe 'my_site' Datenbank und Berechtigungen werden in der richtigen Art und Weise festgelegt (root hat alle Privilegien). Ich habe diese Operationen mit 'phpmyadmin' gemacht.

Was läuft schief?

Antwort

13

Run in Konsole

mysql> grant all privileges on *.* to [email protected] identified by 'password' with grant option; 
+0

Ich möchte diesen Befehl tatsächlich über Python ausführen. Aber ich bekomme Zugriff verweigert. Irgendeine Idee, wie man das automatisiert? Vielen Dank –

0

Ihre Datenbank erkennt Ihren Root-Benutzer und Ihr Kennwort nicht. Wenn Sie zum phpmyAdmin gehen und versuchen können, einen anderen Benutzer und ein anderes Kennwort zu erstellen und der DB zuzuweisen, versuchen Sie, wenn das nicht funktioniert, zu erstellen, aber mit create user zu trösten und alle zu gewähren.

+0

getan besuchen können: –

1

The instruction said to add the username with the SQL statement as:

GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON winestores.* TO [email protected] IDENTIFIED by 'password'; 

After doing this as root, I quit and tried to log back in with the new user. I got the ERROR 1045. I fixed it by logging back in as root and reissuing the SQL statement again except with [email protected] . It worked! I don't know why? Maybe it is the difference between IPs of '127.0.0.1' and 'localhost'???

als auf dev.mysql.com lesen.

+0

hat nicht funktioniert für mich nicht funktioniert. –

0

Für alle, um dieses Problem zu begegnen - stellen Sie sicher, dass der Datenbankbenutzer Hostlocalhost ist. Wenn der Wert % ist, funktioniert er nicht. Sie müssen localhost hinzufügen oder die allgemeinen Sicherheitseinstellungen ändern.

3

Nachdem ich zwei Tage gekämpft habe, habe ich endlich gefunden, was falsch ist. Entire Schritte, um eine MySQL-Datenbank für Django-Website einzurichten sind-

Your settings.py file must look like-

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'django_db', #Name of database you created 
     'USER': 'root',  #Username of database you created 
     'PASSWORD':'',   #Password of database you created 
     'HOST': '', 
     'PORT': '', 
    } } 

Hinweis: -Das Passwort und Benutzernamen oben gegeben ist meines localhost Sie es zu Ihrem ändern.

In Schritt 3, 4 und 5 erfahren Sie, wie Sie den Ordner erreichen, in dem sich die Datei manage.py in Ihrer Anwendung befindet.

6.To check you are in right directory run command ls -l. If you find manage.py file then everything is right go ahead

7.python manage.py migrate

Wenn Sie einen Fehler haben wie- „Kein Modul MySQLdb dem Namen“ in Lauf obigen Befehl Sie die link

8.python manage.py syncdb

9.python manage.py runserver

10.You will be asked for username and password for your Django admin, give whatever you want to open Django admin site.

11.check you are having some tables in your database in localhost at ` http://localhost/phpmyadmin . You are good to go now.