_mysql_exceptions.OperationalError 1044 Доступ запрещен для пользователя, использующего Django - PullRequest
0 голосов
/ 23 февраля 2012

Я пытался получить доступ к базам данных mysql с сервера A на сервер "apple", используя Python Django.Соответствующие операторы:

import settings
os.environ['DJANGO_SETTINGS_MODULE'] = runconfig.django_settings_module
from django.db import connection

class Writer(object):
  def __init__(self):

  def submission(self,pars):
    d = connection.cursor()

, и при выполнении этого я получаю ошибку, как показано ниже:

_mysql_exceptions.OperationalError: (1044, "Access denied for user 'username'@'ice.cse.connell.edu' to database 'mydatabase'")

Содержимое runconfig.py равно

# Django setting module 
django_settings_module = 'settings'

Странно,Я могу войти в mysql с сервера "ice" на сервер "apple" удаленно:

$ mysql -u username -ppassword -h apple

Я копаю эту проблему из SO, но все еще не могу найти ответ.Этот вопрос сводит меня с ума!

Ниже приведены первые несколько строк моего settings.py.Потому что это слишком долго, я не опубликовал все это.Но если кому-то нужно больше, я могу вставить весь контент.

# Django settings for mydatabase project.

DEBUG = False
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    # ('Your Name', 'your_email@domain.com'),
)

MANAGERS = ADMINS

DATABASE_ENGINE = 'mysql'          # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'mydatabase'  # Or path to database file if using sqlite3.
DATABASE_USER = 'username'             # Not used with sqlite3.
DATABASE_PASSWORD = 'password'         # Not used with sqlite3.
DATABASE_HOST = 'apple'            # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.

-----------------------------------------------------------------------------------------

APPENDED POST

После изменения файла settings.py в соответствии с предложением Сида:

#DATABASE_ENGINE = 'mysql'           
#DATABASE_NAME = 'mydatabase'   
#DATABASE_USER = 'username'             
#DATABASE_PASSWORD = 'password'         
#DATABASE_HOST = 'apple'  
#DATABASE_PORT = ''     

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'mydatabase',
    'USER': 'username',
    'PASSWORD': 'password',
    'HOST': 'apple',
    'PORT': '',
  }
}

Входные данные командной строки и сообщения об ошибках

>>> import runconfig
>>> 
>>> import os
>>> import sys
>>> import settings
>>> #from django.conf import settings
... 
>>> os.environ['DJANGO_SETTINGS_MODULE'] = runconfig.django_settings_module
>>> 
>>> from django.db import connection
>>> c = connection.cursor()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/site-packages/django/db/backends/dummy/base.py", line 15, in complain
    raise ImproperlyConfigured, "You haven't set the DATABASE_ENGINE setting yet."
django.core.exceptions.ImproperlyConfigured: You haven't set the DATABASE_ENGINE setting yet.

1 Ответ

0 голосов
/ 23 февраля 2012

Проверьте имя вашей базы данных, оно может быть чувствительным к регистру.

http://groups.google.com/group/django-users/browse_thread/thread/8717661c908b836e

Попробуйте использовать следующий формат:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'mydatabase', 
        'USER': 'username',     
        'PASSWORD': 'password', 
        'HOST': 'apple',
        'PORT': '',     
    }
 }

Также имя пользователяу вас есть права доступа к этой базе данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...