Djangoの使用を開始しました。settings.pyで「データベース」を設定した後の「runserver」のエラーは次のとおりです
mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
コードの私のsettings.py部分:
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'Oracle'.
'NAME': 'my_site', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'root', # 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.
}
}
「my_site」データベースを作成し、権限が正しく設定されています(rootにはすべての権限があります)。この操作は「phpmyadmin」で行いました。
何がうまくいかないのですか?
コンソールで実行
mysql> grant all privileges on *.* to root@localhost identified by 'password' with grant option;
2日間苦労した後、私は最終的に何が悪いのかを見つけました。 Django site are-のmysqlデータベースを設定するための全手順
Settings.pyファイルは次のようになります。
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.mysql',
'NAME': 'Django_db', #Name of database you created
'USER': 'root', #Username of database you created
'PASSWORD':'', #Password of database you created
'Host': '',
'PORT': '',
} }
注:-上記のパスワードとユーザー名は私のローカルホストのものであり、あなたが変更したものです。
localhostにデータベースを作成し、名前を付けますDjango_db(これには、lamp/wamp/Xamppまたはmysqlコマンドプロンプトを使用できます)
ファイルsettings.pyを編集し、以下のコードに示すように、データベースを開くために必要なパスワードをDATABASESフィールドに保存します。
オープンターミナル。
仮想環境を使用している場合は、コマンドを使用して仮想環境に切り替えます->workon env_name
今cd app_nameたとえばcd mysite
ステップ3、4、および5は、アプリケーションでmanage.pyファイルが見つかったフォルダーに到達する方法を示しています。
6.正しいディレクトリにいることを確認するには、コマンドls -lを実行します。あなたがmanage.pyファイルを見つけたら、すべてが順調です
7. python manage.py migrate
上記のコマンドの実行時に「MySQLdbという名前のモジュールはありません」などのエラーが発生した場合は、 link にアクセスできます。
8. python manage.py syncdb
9.python manage.py runserver
10。Django adminのユーザー名とパスワードを要求されます。開きたいものをすべて入力してくださいDjango adminサイト。
11.` http:// localhost/phpmyadmin のlocalhostのデータベースにいくつかのテーブルがあることを確認します。あなたは今行ってもいいです。
命令は、次のようなSQLステートメントで
username
を追加すると述べています。
GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON winestores.* TO [email protected] IDENTIFIED by 'password';
Rootでこれを行った後、私は終了し、新しいユーザーで再度ログインしようとしました。エラー1045が発生しました。rootとして再度ログインし、
username@localhost
を除いてSQLステートメントを再発行することで修正しました。動いた!なぜだかわかりませんか?多分それは「127.0.0.1」と「localhost」のIPの違いですか???
dev.mysql.com を読んでください。
この問題が発生した場合は、データベースユーザーHostがlocalhost
であることを確認してください。 %
に設定した場合、機能しません。localhost
を追加するか、全体的なセキュリティ設定を変更する必要があります。
dBはrootユーザーとパスワードを認識しません。 phpmyAdminに移動して別のユーザーとパスワードを作成し、DBに割り当てることができる場合、それが機能しない場合は、作成してコンソールを作成し、すべてのユーザーに権限を付与してください。
これは、ユーザー名またはパスワードが間違っている場合に発生します.....ユーザー名とパスワードをもう一度確認してください。