MySQL: django.db.utils.OperationalError: (1698, "Zugriff verweigert für Benutzer 'root' @ 'localhost'") mit korrekten Benutzernamen und PW

2017-01-09 5 views
2

Ich habe django.db.utils.OperationalError: (1698, "Access denied for user 'root'@'localhost'") bei Verwendung von MySQL. Der Benutzername und das pw korrekt sind:MySQL: django.db.utils.OperationalError: (1698, "Zugriff verweigert für Benutzer 'root' @ 'localhost'") mit korrekten Benutzernamen und PW

DB_HOST = '127.0.0.1' 
DB_USER = 'root' 
DB_PASSWORD = '' 

ich in MySQL als root anmelden kann:

$ sudo mysql -u root 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 16 

Aber nicht so cchilders:

$ mysql -u root 
ERROR 1698 (28000): Access denied for user 'root'@'localhost' 

Dies zum Problem beitragen kann. Das letzte Mal, als ich mysql installiert habe, ist das nicht passiert, also macht es für mich keinen Sinn. Ich habe den Client fein:

$ pip3 freeze 
Django==1.10.5 
mysqlclient==1.3.9 

Wie kann ich mysql ausgeführt werden von meinem normalen Benutzer erlauben, so kann ich django im Terminal laufen? danke

Schmutzige Lösung:

Ohne Korrekturen, immer mysql als sudo

+1

Ich weiß nicht, ob dies die richtige Antwort ist, aber ich hatte vor kurzem das gleiche Problem und das ist für mich gearbeitet: http://askubuntu.com/questions/766334/cant-login-as-mysql -user-root-from-normal-benutzeraccount-in-ubuntu-16-04 –

+0

Dieser hat mir auch geholfen: https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied- for-Benutzer-rootlocalhost – vinzee

Antwort

1

ein Nicht-Root-SQL-Benutzer und ändern laufen Der Grund dafür, dass Sie sich als root auf Ihrem Server anmelden können, ist, dass Sie wahrscheinlich ein Passwort in der .my.cnf Datei in /root (dh das root Benutzer-Home-Verzeichnis) angegeben haben. Überprüfen Sie, ob dort ein Passwort vorhanden ist und verwenden Sie dieses auch für cchilders. Sie können dann einen django-spezifischen Anwendungsbenutzer erstellen, um sicherzustellen, dass die django-App nur liest/schreibt/etc. zu den Datenbanken, auf die er zugreifen muss, und nicht über den mysql-Benutzer root.

create user [email protected] identified by 'django-user-password'; 
grant usage on *.* to [email protected]; 
grant all privileges on django-database-1 to [email protected]; 
1

Erstellen Sie das DB_USER Variable in der Datei settings.py von Django

Verwandte Themen