2012-03-11 82 views
1

我試圖讓我的第一個Django項目工作,在Windows上,但我得到的是一條錯誤信息:蟒蛇manage.py執行syncdb錯誤

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. 
} 

}

任何人都可以闡明我做錯了什麼嗎?

回答

5

你的數據庫被命名爲GlobalXdb,但在這條線......

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

權限授予django_user名爲Django的數據庫。

將權限授予正確的數據庫GlobalXdb應該解決您的問題。

+0

Ahhhhhh !!!!這解決了這個問題。 感謝您的幫助。 – user1261774 2012-03-11 20:10:52

+0

Django允許您爲數據庫定義多個數據庫訪問權限。然後,您可以指定運行syncd db時要使用的數據庫訪問權限。看到我下面的答案.... – 2014-09-09 23:59:48

2

錯誤消息說Access denied for user 'django_user'@'localhost'所以我的猜測是用戶'django_user'不存在或者您輸入的密碼錯誤。

另一個不太可能的建議是檢查授予'django_user'的權限。該用戶可能沒有創建表的權限。

0

這可以通過在您的settings.py中定義兩個DATABASE配置文件來解決。

默認 - 由django在運行時使用有限權限爲額外的安全性。

sync - 由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'; 

最後,當你運行執行syncdb指定同步訪問配置文件:

python manage.py syncdb --database=sync 

那應該給你se在運行時期望的好奇心以及在命令行上想要的訪問權限。

相關問題