2012-03-11 4 views
1

Я пытаюсь получить мой первый Django проект работать на Windows, но я получаю сообщение об ошибке, которое гласит:питон ошибка manage.py SyncDB

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

Я создал базу данных из командной строки, как:

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

Мой settings.py файл содержит:

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

}

Может ли кто-нибудь пролить свет на то, что я сделал неправильно?

ответ

5

Ваша база данных называется GlobalXdb и еще в этой линии ...

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

вы предоставить разрешения django_user на базе имени Джанго.

Давать по одной базе данных GlobalXdb должен решить вашу проблему.

+0

Ahhhhhh !!!! Это решило проблему. Спасибо за помощь. – user1261774

+0

Django позволяет вам определить несколько разрешений доступа к базе данных для базы данных. Затем вы можете указать доступ к базе данных, который вы хотите использовать при запуске syncd db. Посмотрите на меня ниже. –

2

В сообщении об ошибке указано Access denied for user 'django_user'@'localhost', поэтому я предполагаю, что пользователь django_user не существует или вы неправильно ввели пароль.

Другим менее вероятным вариантом было бы проверить права, предоставленные для «django_user». Возможно, у этого пользователя нет прав на создание таблиц.

0

Это решение определяется путем определения двух профилей базы данных в настройках .py.

по умолчанию - Используется Джанго во время выполнения с ограниченными правами для этой дополнительной безопасности.

синхронизация - Используется SyncDB как пользователь корня, с дополнительными созданием привилегий.

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

Вы также должны предоставить ограниченные разрешения для доступа к исполняемым по умолчанию в MySQL:

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

Наконец, когда вы запускаете SyncDB уточнить ваш профиль синхронизации доступа:

python manage.py syncdb --database=sync 

Это должно дать вам вы хотите во время выполнения и доступ, который вы хотите в командной строке.