ошибка syncdb python manage.py
Вопрос
Я пытаюсь получить мой первый проект Django, на Windows, но я получаю сообщение об ошибке, который читает:
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.
}
.
}
Может ли кто-нибудь пролить свет на то, что я сделал неправильно?
Решение
Ваша база данных названа GlobalXDB и все же в этой строке ...
.
#give user permissions to db
GRANT ALL ON django.* TO 'django_user'@'localhost'
Вы предоставляете разрешения на Django_USER на базе данных с именем
Дайте разрешения на правильную базу данных GlobalXDB должны решить вашу проблему.
Другие советы
Сообщение об ошибке говорит, что Access denied for user 'django_user'@'localhost'
, поэтому я думаю, что пользователь 'django_user' не существует или вы набрали пароль неверным.
Еще одним менее вероятным предложением было бы проверить права, предоставленные для «Django_user».Возможно, у этого пользователя нет разрешения на создание таблиц.
Это решается путем определения двух профилей базы данных в вашем настройках .py .
синхронизация - используется syncdb, как пользователь root , с дополнительными привилегиями.
.
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':'',
},
}
Вам также придется предоставлять
.
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'runtime'@'localhost' IDENTIFIED BY 'runtime_password';
Наконец, когда вы запускаете SyncDB Укажите свой Sync Профиль доступа:
.
python manage.py syncdb --database=sync
Это должно дать вам безопасность, которую вы хотите во время выполнения, и доступ, который вы хотите в командной строке.