環境
Django==2.0.4
PyMySQL==0.8.0
MySQL==5.7
問題
djangoのtest.pyを書いてテストを実行。
$ python manage.py test
以下のようなエラーが出た。
# Got an error creating the test database: (1044, "Access denied for user 'user'@'%' to database 'test_database'")
どうやら、テスト実行時にdatabaseの他にテスト用のデータベースtest_databaseを作ってテストしているらしい。
そしてそのデータベース作成のための権限がなかったらしい。
解決策
settings.pyのデータベースの部分を修正
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'database',
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': '3306',
# テスト用にこの行を追加
'TEST': {
'NAME': 'test_database',
},
}
}
ShellでMySQLにrootでログインする
$ mysql -u root -p
djangoからデータベース操作するuserにtest_databaseへの権利を付与する。
mysql> GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'%';
以上
参考
この記事は主に次のサイトの和訳になってます。
https://stackoverflow.com/questions/14186055/django-test-app-error-got-an-error-creating-the-test-database-permission-deni