Mysql.connector.errors.NotSupportedError: плагин аутентификации «mysql_native_password» не поддерживается только с pyinstaller exe

Я борюсь, чтобы найти решение для моей проблемы:
Когда я запускаю свое приложение Python в своей IDE, соединение с базой данных работает нормально. Но когда я создаю exe-файл с помощью pyinstaller с помощью следующей команды python3 -m PyInstaller .\home.py, запускаю приложение и запускаю соединение с БД, это дает мне следующую ошибку:

Раньше у меня была такая же ошибка с "caching_sha2_password" вместо "mysql_native_password", затем я изменил плагин db на "mysql_native_password", но он все равно не работает в exe.
Моя база данных работает в контейнере Docker. Пользователь root, которого я использую для подключения, также имеет mysql_native_password в качестве плагина аутентификации.

Однако каким-то образом соединение с БД работает каждый раз, когда я запускаю свое приложение из своей IDE. Эта проблема возникает только после того, как я экспортировал свое приложение в exe-файл с помощью pyinstaller.

Подключение к БД выглядит так:

mysql.connector.connect(
      host = "localhost",
      user = "user",
      passwd = "password",
      database = "db_name"     
    )

И да, я уже проверил, что у меня установлено только mysql-connector-python.

Я был бы очень рад, если бы вы могли мне помочь, так как это последний этап подготовки моей заявки к отправке.
Заранее спасибо!

создать минимальный воспроизводимый пример

Alexander 18.11.2022 00:30
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
142
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

После того, как я не смог найти ответ на свою проблему, я просто переключился на Postgres и использовал соответствующий драйвер Python. Теперь это работает!

После большого стресса я решил установить более старую версию mysql-connector-python с этого сайта https://downloads.mysql.com/archives/c-python/

Я установил 8.0.20 и пока работает. протестируйте позже и проверьте. У меня была такая же ошибка в течение нескольких недель.

Единственная разница с вами в том, что я использовал не pyinstaller, а файл CX_Freeze.

Другие вопросы по теме