سؤال

أحاول تشغيل مشروع 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 وحتى الآن في هذا الخط ... giveacodicetagpre.

تمنح أذونات django_user في قاعدة البيانات المسماة django .

تعطي أذونات إلى قاعدة البيانات الصحيحة globalxdb يجب أن تحل مشكلتك.

نصائح أخرى

تقول رسالة الخطأ Access denied for user 'django_user'@'localhost' لذلك أعتقد أن المستخدم "Django_user" غير موجود أو أنك كتبت كلمة المرور بشكل خاطئ.

هناك اقتراح آخر أقل احتمالاً وهو التحقق من الحقوق الممنوحة لـ "Django_user".من المحتمل أن هذا المستخدم ليس لديه الإذن بإنشاء الجداول.

يتم حل هذه المشكلة عن طريق تحديد ملفي تعريف لقاعدة البيانات في ملفك settings.py.

تقصير - يستخدم بواسطة Django في وقت التشغيل مع أذونات محدودة لهذا الأمن الإضافي.

مزامنة - يستخدم بواسطة 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';

وأخيرا عند تشغيل com.syncdb تحديد الخاص بك مزامنة الوصول إلى الملف الشخصي:

python manage.py syncdb --database=sync

من المفترض أن يمنحك ذلك الأمان الذي تريده في وقت التشغيل والوصول الذي تريده إلى سطر الأوامر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top