私はMySQLデータベースを使用してDjangoアプリケーションを使用しています。私はデータベースfoo
を作成し、新しいユーザーfoo_user
を作成し、foo.*
からfoo_user
へのすべての特権を与え、フラッシュされた特権を与えました。私はこのスニペットを使ってPythonから接続することができDjango - MySQL:1045 'user' @ 'localhost'のアクセスが拒否されました
+-----------------------------------------------------------+
| Grants for [email protected] |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'foo_user'@'localhost' |
| GRANT ALL PRIVILEGES ON `foo`.* TO 'foo_user'@'localhost' |
+-----------------------------------------------------------+
:
私は私にこれを与えfoo_user
とSHOW GRANTS;
として、コマンドラインからログインでき
import MySQLdb
try:
db = MySQLdb.connect('localhost', 'foo_user', 'verysecurepassword', 'foo')
cursor = db.cursor()
cursor.execute('SHOW GRANTS;')
results = cursor.fetchall()
for r in results:
print(r)
except MySQLdb.Error as e:
print(e)
これがために特権を印刷しますfoo_user
と予想されます。
settings.py
db_pass = ''
db_pass_file = os.path.join(os.path.expanduser('~'), 'db.passwd')
with open(db_pass_file, 'r') as dbpf:
db_pass = dbpf.read()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'foo',
'USER': 'foo_user',
'PASSWORD': db_pass,
'HOST': 'localhost',
'PORT': '3306',
},
}
しかし、私はmakemigrations
しようとすると、私は
django.db.utils.OperationalError: (1045, "Access denied for user 'foo_user'@'localhost' (using password: YES)")
を取得し、私はSO、私が見つけることができる答えておきのアドバイスに従ってきました。私はデータベースとユーザーを落としてから、それらを数回再作成しました。明らかに間違っているものは何も見つかりません。エラー自体はあまり役に立ちません。私の質問は、MySQLやDjangoのより多くの情報を強制的に強制して何がうまくいかないかを知ることです。
ETA:パイソン3.5.2に、Django 1.11.7、14.14按分5.7.20版のMySQL、EC2インスタンス上で実行されている