前提・実現したいこと
Ubuntuでdjango+apache2とmySQLを起動してweb構築をしています。
外部のpcからサーバーpcにアクセスし、サイトを表示させることは出来たのですが、管理サイトからログインする際に、以下のようなエラーが発生しました。djangoのプロジェクト内にあるsettings.pyのDATABASEに問題があると思い、HOST部分をlocalhostからmySQLサーバーのIPアドレスに設定することで、管理サイトにログインすることができました。しかし、ここで変更前に指していたlocalhostとは何だったのでしょうか?私の知識では127.0.0.1として自分自身のipアドレスを指すので、mysqlサーバーが同一ipにある以上localhostでも問題が無いように思えるのですが、下記のエラーが発生していました。どなたか何故localhostではアクセスできないのかご教授ください。
発生している問題・エラーメッセージ
OperationalError at /admin/login/ (1698, "Access denied for user 'root'@'localhost'") Request Method: POST Request URL: http://IPアドレス/mysite/admin/login/?next=/mysite/admin/ Django Version: 2.2.7 Exception Type: OperationalError Exception Value: (1698, "Access denied for user 'root'@'localhost'") Exception Location: /usr/local/lib/python3.6/dist-packages/MySQLdb/connections.py in __init__, line 171 Python Executable: /usr/bin/python3 Python Version: 3.6.8 Python Path: ['/home/ui/mysite', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages'] Server time: 木, 28 11月 2019 15:57:15 +0900
該当のソースコード
python3
1 DATABASES = { 2 'default': { 3 'ENGINE': 'django.db.backends.mysql', 4 'NAME': 'db', 5 'USER': 'root', 6 'PASSWORD': 'pass', 7 'HOST': 'localhost', //localhostだとアクセス出来ない 8 'PORT': '3306', 9 } 10 } 11
mySQL
1+------------------+-----------+ 2| user | host | 3+------------------+-----------+ 4| root | % | 5| debian-sys-maint | localhost | 6| mysql.session | localhost | 7| mysql.sys | localhost | 8| root | localhost | 9| test | localhost | 10+------------------+-----------+
試したこと
settings.pyのDATABASESのHOSTをlocalhostにして外部pcから管理サイトへのログイン -> 接続失敗
同じくHOSTをlocalhostにしてサーバーpcから管理サイトへのログイン -> 接続失敗
settings.pyのDATABASESのHOSTをサーバーPCのipaアドレスに設定して外部pcから管理サイトへのログイン -> 接続成功
同じ条件でサーバーpcから管理サイトへのログイン -> 接続成功
補足情報(FW/ツールのバージョンなど)
Ubuntu 18.04.3 LTS
Python 3.6.8
Django 2.2.7
Apache/2.4.29 (Ubuntu)
mysql Ver 14.14