Question

J'essaie d'obtenir mon premier projet Django de travail, sur Windows, mais j'obtiens un message d'erreur qui dit:

File "c:\users\[username]\appdata\local\temp\easy_install-pazcre\MySQL_python-1.2.3-py2.7-    win32.egg.tmp\MySQLdb\connections.py", line 187, in __init__     mysql_exceptions.OperationalError: (1045, "Access denied for user 'django_user'@'localhost'     (using password: YES)")

J'ai créé ma base de données à partir de la ligne de commande comme:

-- create the database
CREATE DATABASE GlobalXdb CHARACTER SET utf8;

-- create user
CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'thepassword';

-- give user permissions to db 
GRANT ALL ON django.* TO 'django_user'@'localhost'

Mon settings.py le fichier contient:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': 'GlobalXdb',                      # Or path to database file if using sqlite3.
    'USER': 'django_user',                      # Not used with sqlite3.
    'PASSWORD': 'thepassword',                  # 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.
}

}

Quelqu'un peut jeter un peu de lumière sur ce que j'ai fait mal?

Était-ce utile?

La solution

Votre base de données est nommé GlobalXdb et pourtant, dans cette ligne...

#give user permissions to db 
GRANT ALL ON django.* TO 'django_user'@'localhost'

vous accordez des autorisations à django_user sur la base de données nommée django.

Donner des autorisations à la base de données correcte GlobalXdb devrait résoudre votre problème.

Autres conseils

Le message d'erreur dit Access denied for user 'django_user'@'localhost' donc j'imagine que l'utilisateur 'django_user' n'existe pas ou vous avez tapé le mot de passe erroné.

Un autre moins susceptibles suggestion serait de vérifier les droits accordés pour 'django_user'.Il est possible que cet utilisateur n'est pas autorisé à créer des tables.

Ce problème est résolu par la définition des deux profils dans votre BASE de données settings.py.

par défaut - Utilisé par django lors de l'exécution avec des autorisations limitées pour que la sécurité supplémentaire.

synchronisation - Utilisé par syncdb, en tant qu'utilisateur racine, avec un supplément de créer des privilèges.

DATABASES = {
  'default': {
    'ENGINE':'django.db.backends.mysql',
    'NAME':'database_name',
    'USER':'runtime',
    'PASSWORD':'runtime_password',
    'HOST':'',
    'PORT':'',
  },
  'sync': {
    'ENGINE':'django.db.backends.mysql',
    'NAME':'database_name',
    'USER':'root',
    'PASSWORD':'',
    'HOST':'',
    'PORT':'',
  },
}

Vous aurez également à accorder des autorisations limitées pour le défaut d'exécution d'accès à MySQL:

GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'runtime'@'localhost' IDENTIFIED BY 'runtime_password';

Enfin, lorsque vous exécutez syncdb indiquez votre synchronisation profil d'accès:

python manage.py syncdb --database=sync

Cela devrait vous donner la sécurité que vous souhaitez au moment de l'exécution et de l'accès que vous souhaitez sur la ligne de commande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top