У меня есть тривиальная программа (ниже), которая запускается под venv с помощью pip для загрузки модулей mysql и mysql -connector- python, но не работает, когда я создаю среду с conda.
Сообщение об ошибке:
mysql.connector.errors.DatabaseError: 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/Users/Wes/opt/miniconda3/envs/ty_db_conda/lib/plugin/caching_sha2_password.so, 2): image not found
Конечно, caching_sha2_password.so не находится в каталоге среды conda.
Так как он работает под venv, я изначально предполагал, что проблема была в упаковке conda, но я нигде не могу найти caching_sha2_password.so на моей маме c. В частности, он не находится в / usr / local / mysql / lib / plugin, который является каталогом плагинов, установленным установщиком Oracle MySQL. Аналогично, команда командной строки find не находит этот файл нигде во всей системе.
Я прочитал многочисленные сообщения о stackoverflow и в других местах о том, как обойти это сообщение об ошибке, используя менее безопасную схему аутентификации, но Я надеюсь избежать этого.
Итак, мои вопросы таковы:
Должен ли caching_sha2 работать без плагина caching_sha2_password.so? Если да, то как мне заставить его работать в среде conda?
Как это работает под venv? Кажется, что плагин должен быть где-то. Я проверил подкаталог venv, который я создал для этого проекта, и там нет .so файлов или ссылок на .so файлы.
Где я могу получить копию caching_sha2_password.so для размещения по крайней мере в среде conda проверить?
Вот программа
import mysql.connector as dbase
test_dbconfig = {
"user": "ETP",
"password": "Hetp2020",
"database": "HETPtesting",
"auth_plugin": 'caching_sha2_password'
}
cnx = dbase.connect(**test_dbconfig)
Вот команда, которую я использовал для создания conda env
conda create --name ty_db_conda mysql mysql-connector-python
Здесь это команды, которые я использовал для создания работающего venv.
python3 -m venv ./try_db_venv
source ./try_db_venv/bin/activate
pip install mysql
pip install mysql.connector.python