Pergunta

Eu estou tentando o meu primeiro Django projeto de trabalho, no Windows, mas recebo uma mensagem de erro que diz:

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

Eu criei o meu banco de dados a partir da linha de comando 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'

Meu settings.py ficheiro contém:

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

}

Alguém pode lançar alguma luz sobre o que eu tenho feito incorretamente?

Foi útil?

Solução

Seu banco de dados é chamado de GlobalXdb e ainda nesta linha...

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

você pode conceder permissões para django_user no banco de dados chamado django.

Dar permissões para o banco de dados correto GlobalXdb deve resolver o seu problema.

Outras dicas

A mensagem de erro diz Access denied for user 'django_user'@'localhost' então, meu palpite é de que o usuário 'django_user' não existe ou você digitou a senha errada.

Outro menos provável sugestão seria a de verificar os direitos concedidos para o 'django_user'.É possível que este usuário não tem permissão para criar tabelas.

Este é resolvido pela definição de duas bases de DADOS de perfis na sua settings.py.

padrão - Utilizado por django em tempo de execução com permissões limitadas para que a segurança extra.

sincronização - Utilizado por syncdb, como usuário raiz, com o extra de criar privilégios.

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

Você também terá de conceder permissões limitadas para o padrão de tempo de execução do access no MySQL:

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

Finalmente, quando você executar syncdb especificar a sua sincronização perfil de acesso:

python manage.py syncdb --database=sync

Que deve dar-lhe a segurança que você quer em tempo de execução e o acesso que você deseja na linha de comando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top