Pregunta

Estoy intentando obtener mi primer proyecto de Django que trabaja, en Windows, pero recibo un mensaje de error que lee:

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)")

He creado mi base de datos desde la línea de comandos como:

-- 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'

Mi archivo settings.py contiene:

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

}

¿Puede alguien arrojar algo de luz sobre lo que he hecho incorrectamente?

¿Fue útil?

Solución

Su base de datos se nombra globalxdb y, sin embargo, en esta línea ...

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

Usted otorga permisos a Django_User en la base de datos nombrada django .

Dar permisos a la base de datos correcta globalxdb debe resolver su problema.

Otros consejos

El mensaje de error dice Access denied for user 'django_user'@'localhost', por lo que mi conjetura sería que el usuario 'django_user' no existe o escribió la contraseña incorrecta.

Otra sugerencia menos probable sería verificar los derechos otorgados para 'django_user'.Es posible que este usuario no tenga permiso para crear tablas.

Esto se resuelve definiendo dos perfiles de base de datos en su configuración .py .

predeterminado - utilizado por Django en tiempo de ejecución con Permisos limitados para esa seguridad adicional.

sincronización - utilizada por syncdb, como usuario raíz , con privilegios de creación adicional.

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

También tendrá que otorgar Permisos limitados para el acceso de tiempo de ejecución predeterminado en MySQL:

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

Finalmente cuando ejecuta syncdb Especifique su perfil de acceso sync :

python manage.py syncdb --database=sync

Eso debería darle la seguridad que desea en Tiempo de ejecución y el acceso que desea en la línea de comandos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top