Я использую Django2.2 с Python3 и MySQL8.0.16 для создания механизма ETL. В моем файле Django settings.py указан правильный логин для моего экземпляра MySQL. Я знаю, что эти данные верны, потому что я проверил их, чтобы вручную войти в MySQL из CLI. У меня проблемы с подключением к экземпляру MySQL из Django, и поле 'user' в журнале ошибок не совпадает ни с одним пользователем, которого я настроил на своем экземпляре MySQL. Фактически, поле 'user' в журнале ошибок на самом деле является пользователем системы UNIX на моем корпоративно выпущенном ноутбуке.
Я уже настроил пользователя, john , чтобы иметь доступ к следующим таблицам: (примечание: я хочу использовать production_tab , как только я смогу подключиться).
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| production_tab |
| mysql |
| performance_schema |
| sys |
+--------------------+
Я использую корпоративный Macbook, поэтому не могу сменить пользователя по умолчанию в моей системе UNIX:
➜ project git:(master) ✗ dscl . list /Users | tail -5
my_corporate_username
root
Я попытался изучить пользователей MySQL для дальнейшей диагностики проблемы, и похоже, что my_corporate_username не зарегистрированный пользователь (который предназначен) и имя пользователя, которое я настроил, john зарегистрирован с паролем, который явно соответствует моему settings.py файлу:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| my_corporate_username | XXXXXXXXXXX~OY7XYXYXHVSrQjUXYXYXYXXTbx/I.oXYXXYYkiCJ0XYXYXXo7yDLGI7 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *59A3E0XXXXXXXXXXXXXXXE093F493462XXXXXXXX | mysql_native_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
В моем файле settings.py у меня есть правильные учетные данные, которые позволили мне запросить базы данных show; во-первых, , что меня действительно смутило, почему (i) Я не могу подключиться к MySQL через правильные учетные данные для входа, которые позволяют мне войти через CLI и (ii) почему я получаю следующую ошибку при запуске python3 manage.py runserver :
django.db.utils.OperationalError: (1045, "Access denied for user 'my_corporate_username'@'localhost' (using password: YES)")
My settings.py file:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'john',
'PASSWORD': 'passwd',
'PORT': '3306',
'HOST': 'localhost',
}
}
Я склонен думать, что некоторые из этих проблем происходят из-за какой-то странной проблемы с разрешениями, которая существует в самой базе данных или, возможно, в каком-то файле конфигурации? Это просто моя лучшая догадка. Спасибо за любую помощь! Ура!