1

Windows で最初の Django プロジェクトを動作させようとしていますが、次のようなエラー メッセージが表示されます。

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

}

私が間違ってやったことに誰かが光を当てることができますか?

4

3 に答える 3

5

データベースの名前はGlobalXdbですが、この行では...

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

djangoという名前のデータベースで django_user に権限を付与します。

正しいデータベースGlobalXdbにアクセス許可を付与すると、問題が解決するはずです。

于 2012-03-11T05:34:02.740 に答える
2

エラーメッセージにはAccess denied for user 'django_user'@'localhost'、ユーザー「django_user」が存在しないか、パスワードを間違って入力したことが推測されます。

あまりありそうにないもう 1 つの提案は、「django_user」に付与された権限を確認することです。このユーザーには、テーブルを作成する権限がない可能性があります。

于 2012-03-11T03:14:04.637 に答える
0

これは、 settings.pyで 2 つの DATABASE プロファイルを定義することで解決されます。

default - 実行時に django によって使用され、セキュリティを強化するためにアクセス許可が制限されます。

sync - ユーザーrootとして追加の作成権限を持つ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

これにより、実行時に必要なセキュリティと、コマンド ラインで必要なアクセスが得られるはずです。

于 2014-09-10T00:08:38.760 に答える