Python Manage.py SyncDBエラー
質問
私の最初の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'
.
My 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 と命名されています。まだこの行に...
.
#give user permissions to db
GRANT ALL ON django.* TO 'django_user'@'localhost'
django という名前のデータベース上のDjango_userへの権限を付与します。
正しいデータベースへの権限を与える globalXDB あなたの問題を解決するべきです。
他のヒント
エラーメッセージは、Access denied for user 'django_user'@'localhost'
と表示されているので、私の推測は、ユーザー 'Django_User'が存在しないか、パスワードを間違って入力したと思います。
他の考え方は、「django_user」に付与された権利を確認することです。このユーザーにテーブルを作成する権限がない可能性があります。
これは、 settings.py の2つのデータベースプロファイルを定義することによって解決されます。
デフォルト - その余分なセキュリティのための制限された権限を備えたDjangoによって使用されます。
sync - syncdbで使用される、user root には、追加のCREATE特権があります。
.
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 アクセスプロファイルを指定します。
.
python manage.py syncdb --database=sync
それはあなたが実行時にあなたが望むセキュリティとコマンドライン上であなたが必要なアクセスを与えるべきです。