djangoでmysql接続するとエラーで接続できない。

1,799 views
Skip to first unread message

sinf...@gmail.com

unread,
Apr 22, 2018, 8:03:27 AM4/22/18
to django-ja
当方Mysqlの初心者で、DJANGO- mysql接続ができず困っております。
環境は以下の通りです。
-----------------------------------------------------
django 2.0.4
Mysql 8.0.11(先日リリースされた最新)
windows10
-----------------------------------------------------

上記環境にて、python manage.py makemigrations を実行すると以下のエラーが発生します。
※プロジェクト、アプリ等の初期設定は設定済み。

django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")

Mysqlの接続に関する設定は以下を実施済みです。

setting.py
ーーーーーーーーーー
DATABASES = {
    'default': {
     'ENGINE': 'django.db.backends.mysql',
     'NAME': 'sampledb',
     'USER': 'root',
     'PASSWORD': 'hogehoge',
     'HOST': 'localhost',
     'PORT': '3306',
     'OPTIONS': {
     'charset': 'utf8mb4',
     'sql_mode': 'TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BY',
    }
  }
}
-------------------
manage.py
-------------------
以下の2行を追加。
import pymysql
pymysql.install_as_MySQLdb()


mysqlコマンドではsetting.pyで指定したパスワードで問題なくログオンできるためパスワードはあっています。

権限系の問題かと思い、以下コマンドでrootに全権限を付与してみましたが状況は変わりませんでした。

GRANT ALL ON sampledb.* TO 'root'@'localhost';

最新のMySQLバージョンなのでDjanogが対応していないのか、そもそも根本的に設定が不足、もしくは誤っている部分があるのかいろいろ検索してみましたがわかりませんでした。

どなかた情報をお持ちの方がいましたら共有いただけますと幸いです。

INADA Naoki

unread,
Apr 22, 2018, 9:04:42 AM4/22/18
to djan...@googlegroups.com
MySQL 8 からは新しいパスワード方式がデフォルトになっていて、PyMySQLはまだ対応していません。
mysqlclient も、MySQL8に同梱されているライブラリとリンクすれば動くかもしれませんが、未検証です。少なくともバイナリ版で配布しているのは古いクライアントライブラリなので対応できません。

なので、古い方式でパスワードを作り直すか、新しい方式に対応しているOracle公式のMySQL Connector/Python を試してみてください。

sinf...@gmail.com

unread,
Apr 23, 2018, 4:21:15 AM4/23/18
to django-ja
情報ありがとうございます!

8.0からパスワード認証機能が新しくなっている点をすっかり失念しておりました・・
大変助かりました。
ありがとうございます。


2018年4月22日日曜日 22時04分42秒 UTC+9 INADA Naoki:
Reply all
Reply to author
Forward
0 new messages