web-dev-qa-db-fra.com

mysql_exceptions.OperationalError: (1045, "Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)")

J'ai commencé à travailler avec Django, et voici l'erreur sur 'runserver' après avoir configuré 'DATABASES' dans settings.py

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

Ma partie settings.py du code:

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.
    }

}

J'ai créé la base de données 'my_site' et les privilèges sont définis de la bonne manière (root a tous les privilèges). J'ai fait ces opérations avec 'phpmyadmin'.

Qu'est-ce qui ne va pas?

14
Massimo Variolo

Exécuter dans la console

mysql> grant all privileges on *.* to root@localhost identified by 'password' with grant option;
14
Akhilraj N S

Après avoir lutté pendant deux jours, j'ai finalement trouvé ce qui n'allait pas. Toutes les étapes pour configurer une base de données mysql pour Django site sont -

Votre fichier settings.py doit ressembler à:

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': '',
    } }

Remarque: -Le mot de passe et le nom d'utilisateur indiqués ci-dessus sont de mon hôte local, vous l'avez changé en le vôtre.

  1. créer une base de données dans localhost nommez-le Django_db (pour cela, vous pouvez utiliser lamp/wamp/Xampp ou l'invite de commande mysql)

  2. Modifiez le fichier settings.py et enregistrez le mot de passe dont vous avez besoin pour ouvrir votre base de données dans le champ BASES DE DONNÉES comme indiqué ci-dessous dans le code.

  3. terminal ouvert.

  4. Si vous utilisez un environnement virtuel, passez-y en utilisant la commande -> workon env_name

  5. Maintenant cd app_name eg. cd mysite

les étapes 3, 4 et 5 indiquent simplement comment atteindre le dossier où se trouve le fichier manage.py dans votre application.

6.Pour vérifier que vous êtes dans le bon répertoire, exécutez la commande ls -l. Si vous trouvez le fichier manage.py, alors tout va bien, allez-y

7. migrer manage.py python

Si vous rencontrez une erreur comme "Aucun module nommé MySQLdb" lors de l'exécution de la commande ci-dessus, vous pouvez visiter le link

8.python manage.py syncdb

9.python manage.py runserver

10.Il vous sera demandé un nom d'utilisateur et un mot de passe pour votre administrateur Django, donnez ce que vous voulez ouvrir Django site d'administration.

Vérifiez que vous avez des tables dans votre base de données dans localhost à ` http: // localhost/phpmyadmin . Vous êtes prêt à partir maintenant.

3
Rahul Satal

L'instruction a dit d'ajouter le username avec l'instruction SQL comme:

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

Après avoir fait cela en tant que root, j'ai quitté et essayé de me reconnecter avec le nouvel utilisateur. J'ai obtenu l'ERREUR 1045. Je l'ai corrigé en me reconnectant en tant que root et en réémettant l'instruction SQL, sauf avec username@localhost. Ça a marché! Je ne sais pas pourquoi? C'est peut-être la différence entre les IP de '127.0.0.1' et 'localhost' ???

comme lu sur dev.mysql.com .

2
hjpotter92

Pour toute personne rencontrant ce problème - vérifiez que l'utilisateur de la base de données Host est localhost. Si défini sur %, cela ne fonctionnera pas, vous devrez ajouter localhost ou modifier vos paramètres de sécurité généraux.

1
Dennis Kioko

votre base de données ne reconnaît pas votre utilisateur root et votre mot de passe. Si vous pouvez accéder à phpmyAdmin et essayer de créer un utilisateur et un mot de passe différents et les affecter à la base de données, si cela ne fonctionne pas, essayez de créer mais consolez avec create user et accordez tout.

0
jcho360

Cela se produit lorsque votre nom d'utilisateur ou votre mot de passe est erroné ... alors parcourez à nouveau le nom d'utilisateur et le mot de passe.

0
Sparsh Bansal