python manage.py syncdb ошибка - PullRequest
       41

python manage.py syncdb ошибка

1 голос
/ 11 марта 2012

Я пытаюсь заставить мой первый проект 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.
}

}

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

Ответы [ 3 ]

5 голосов
/ 11 марта 2012

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

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

вы предоставляете разрешения для django_user в базе данных с именем django .

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

2 голосов
/ 11 марта 2012

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

Еще одним менее вероятным предложением будет проверка прав, предоставленных для'django_user.Возможно, у этого пользователя нет прав на создание таблиц.

0 голосов
/ 10 сентября 2014

Это решается путем определения двух профилей DATABASE в вашем settings.py .

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

sync - используется 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':'',
  },
}

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

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

Наконец, когда вы запускаете syncdb , укажите свой sync доступprofile:

python manage.py syncdb --database=sync

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

...