Пакет 'cryptography' необходим для методов аутентификации sha256_password или caching_sha2_password
Метод запроса: POST
URL запроса: http://192.168.0.110/admin/login/?next=/admin/.
Версия Django: 4.0.1
Тип исключения: RuntimeError
Значение исключения:
Пакет 'cryptography' требуется для методов аутентификации sha256_password или caching_sha2_password
Местоположение исключения: /home/chickoos/explab/ExpLab/venv/lib/python3.8/site-packages/pymysql/_auth.py, строка 143, in sha2_rsa_encrypt
Исполняемый файл Python: /home/chickoos/explab/ExpLab/venv/bin/python
Версия Python: 3.8.10
Python Path:
['/home/chickoos/explab/ExpLab',
'/usr/lib/python38.zip',
'/usr/lib/python3.8',
'/usr/lib/python3.8/lib-dynload',
'/home/chickoos/explab/ExpLab/venv/lib/python3.8/site-packages'].
Время сервера:
Чтобы использовать "sha256_password" или "caching_sha2_password" для аутентификации, необходимо установить дополнительную зависимость:
$ python3 -m pip install PyMySQL[rsa]
Согласно официальной документации: https://pymysql.readthedocs.io/en/latest/user/installation.html
В моем случае, который вдруг ни с того ни с сего выдал эту ошибку, я разобрался. Я забыл пароль root в MySql под MacOSX, для инициализации которого нужно зайти в системные настройки -> MySQL -> initialize DB
Вы, конечно, удалили все, что у меня было раньше, но, похоже, это дало мне 2 варианта, которые я пропустил в первый раз.
[*] Use Strong Password Encryption
MySQL 8 supports a newer, stronger authentication method. All new
installations should use this method, but older connectors and clients may be
unable to connect.
Or
[ ] Use Legacy Password Encryption
The legacy authentication method should only be used when compatibility with
MySQL 5.x connectors or clients is required.
По какой-то причине я выбрал значение по умолчанию, и это привело к исключению при попытке подключения:
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
Так что проблема была не в либе python, меня осенило, потому что эта ошибка также появляется, когда вы используете UI и пытаетесь подключиться, внезапно я увидел ту же ошибку (которую я также пропустил и просто нажал "продолжить").
Чтобы решить эту проблему, я инициализировал его снова (и удалил все таблицы), перейдя в раздел
system preferences -> MySQL -> initialize DB
и выбрал "Legacy Password"