2012-06-23 11 views
22

तो मैं Django सीख रहा हूँ (1, 3, 1, 'अंतिम', 0) इस संसाधन के माध्यम से स्थानीय होस्ट: http://www.djangobook.com/en/2.0/chapter05/Django के साथ MySQL का उपयोग करना - पहुँच उपयोगकर्ता के लिए इनकार कर दिया '@'

मैं स्थापित 'mysql सर्वर 'और' पायथन-माइस्क्ल्डब 'सिनैप्टिक के माध्यम से। मैंने सेटिंग.py में प्रासंगिक सेटिंग बदल दी।

पुस्तक ऊपर उल्लेख किया manage.py खोल से चलाने के लिए हमें बताती है: इन आदेशों चलाने के बाद

>>> from django.db import connection 
>>> cursor = connection.cursor() 

मैं इस त्रुटि मिलती है:

OperationalError: (1044, "Access denied for user ''@'localhost' to database 'mydb'") 

    Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/usr/lib/python2.7/dist-packages/django/db/backends/__init__.py", line 250, in cursor 
    cursor = self.make_debug_cursor(self._cursor()) 
    File "/usr/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 322, in _cursor 
    self.connection = Database.connect(**kwargs) 
    File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect 
    return Connection(*args, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__ 
    super(Connection, self).__init__(*args, **kwargs2) 
OperationalError: (1044, "Access denied for user ''@'localhost' to database 'mydb'") 

MySQL मुझसे पूछते था एक रूट सेट करने के लिए पासवर्ड जब मैंने इसे पहली बार स्थापित किया, तो क्या इसका उपयोग यहां किया जाएगा? या यह कुछ और है?

उत्तर

28

आपका उपयोगकर्ता डेटाबेस के लिए एक पहुँच नहीं है कोशिश। अपना डेटाबेस सेट अप करने के लिए नीचे दिए गए आदेशों का प्रयोग करें।

DROP DATABASE IF EXISTS `mydb`; 
CREATE DATABASE `mydb` 
    DEFAULT CHARACTER SET utf8 
    DEFAULT COLLATE utf8_general_ci; 

USE 'mysql'; 
GRANT ALL PRIVILEGES ON mydb.* TO 'mydb_user'@'localhost' IDENTIFIED BY 'your_password' 

WITH GRANT OPTION; 
FLUSH PRIVILEGES; 

इसके अलावा, आपको इसे चलाने के लिए पर्याप्त विशेषाधिकार होने की आवश्यकता है। तो script.sql के रूप में सहेज,

$mysql -u root -p < script.sql 

पर से settings.py जहाँ आप सुनिश्चित करें कि आपके डाटाबेस सेटिंग्स स्थापित कर रहे हैं बनाने की जरूरत है ठीक से

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'mydb',     
     'USER': 'mydb_user',    
     'PASSWORD': 'your_password',     
     'HOST': '',      
     'PORT': '',      
    } 
} 

और

python manage.py syncdb 

और हो गया।

+1

मुझे एक ही त्रुटि मिलती है यदि मैं "ड्राप डेटाबेस अगर एक्सस्ट्स 'mydb' कोशिश करता हूं;" ERROR 1044 (42000): उपयोगकर्ता '' 'लोकहोस्ट' के लिए डेटाबेस 'mydb' – user1265125

+0

पर पहुंच से इनकार कर दिया गया है टेस्ट = सेटिंग्स में सही – gdoumenc

0

डीजेंगो पुस्तक अब तक काफी पुरानी है। विशेष रूप से, डेटाबेस सेटिंग्स अब एक शब्दकोश है, बल्कि django पुस्तक में वर्णित चर का गुच्छा है।

आपके ट्रेसबैक की आखिरी पंक्ति को देखते हुए, ऐसा लगता है कि यह उपयोगकर्ता नाम के बिना कनेक्ट करने का प्रयास कर रहा है।

बदलते

DATABASE_ENGINE = '' 
DATABASE_NAME = '' 
DATABASE_USER = '' 
DATABASE_PASSWORD = '' 

को
DATABASES = { 
    'default': { 
     'ENGINE': '', 
     'NAME': '' 
     'USER': '' 
     # etc 
    } 
} 
+0

मैं Django (1, 3, 1, 'अंतिम', 0) का उपयोग कर रहा हूं मुझे पता नहीं था कि DjangoBook पुराना है। अब तक सीखने में मेरी मदद करने के लिए यह एक बहुत अच्छा टूल रहा है, क्या आप इसे छोड़ने की सलाह देते हैं? वास्तव में मेरी django सेटिंग एक शब्दकोश की तरह दिखती है, इसलिए यह मुद्दा नहीं है। – user1265125

4

परीक्षण पर Django ट्यूटोरियल का पालन करते समय भी मैं इस समस्या में भाग गया (https://docs.djangoproject.com/en/dev/intro/tutorial05/)।

[email protected]:~/django/mysite$ python manage.py test polls 

Creating test database for alias 'default'... 
Got an error creating the test database: (1044, "Access denied for user 'admin'@'localhost' to database 'test_django_mysite'") 
Type 'yes' if you would like to try deleting the test database 'test_django_mysite', or 'no' to cancel: 

समस्या यह है कि Django test_django_mysite नामक एक अस्थायी डेटाबेस पैदा कर रही है है: जब चुनाव ऐप का परीक्षण करने की कोशिश कर, मैं निम्न त्रुटि प्राप्त किया।
मैं test_django_mysite डेटाबेस पर 'admin' @ 'localhost' तक पहुंच प्रदान करके इस समस्या को हल करने में सक्षम था जिसे वह बनाने की कोशिश कर रहा था।

mysql> GRANT ALL PRIVILEGES ON test_django_mysite.* TO [email protected] IDENTIFIED BY 'mypassword'; 
Query OK, 0 rows affected (0.04 sec) 

यह ध्यान देने योग्य है कि मैंने केवल test_django_mysite के विशेषाधिकार दिए हैं। मुझे वास्तव में इसे बनाने की आवश्यकता नहीं थी।

+1

अभी तक एक अन्य कारण है कि MySQL क्यों बेकार है! पोस्टग्रेज़ के साथ, मैं $ psql> बनाने के साथ भूमिका 'उपयोगकर्ता नाम' बदलने में सक्षम था; और वह आईटी है। मैंने आज इस पर 30 मिनट बिताए, और यह एकमात्र जवाब है जो काम करता है! –

0

यदि आपने डेटाबेस पासवर्ड और अपडेट की गई सेटिंग्स.py बदल दी है, तो आपको wsgi.py प्रक्रिया को पुनरारंभ करना होगा, उदाहरण के लिए अपाचे को पुनरारंभ करना।

0

बस मेरा जवाब यहां छोड़ देगा क्योंकि इस मामले में मैंने कुछ अच्छे मिनट (लगभग घंटा) खो दिए थे।

आपका कॉपी-पेस्ट देखो :) दुर्भाग्य से, mysql सफलता लौट मौजूदा उपयोगकर्ता नहीं करने के लिए विशेषाधिकार देने, जबकि मौजूदा डेटाबेस नहीं करने के लिए ...

दोनों प्रश्नों:

और:

GRANT ALL PRIVILEGES ON python_db.* TO 'python_user'@'%' WITH GRANT OPTION 

सफलता वापस कर देगा। एल्डो मेरे पास ऐसे उपयोगकर्ता नहीं हैं जिन्हें python_db और db नाम python_user कहा जाता है। :) यह दुखद है। मेरी गलती लेकिन MySQL भी उत्पादन के साथ पर्याप्त सहायक नहीं था। :)

1

मेरे समस्या यह है कि मैं संपादन किया गया था settings.py जबकि विन्यास local_settings.py

अब सब कुछ काम करने के लिए लगता है में किया गया है चाहिए था।

संबंधित मुद्दे

 संबंधित मुद्दे