"Плагин аутентификации" caching_sha2_password '

Я новичок в среде MySql и установил: MySQL со следующими командами:

sudo apt-get update sudo apt-get install mysql-server mysql_secure_installation

а также установленный workbench mysql.

Но когда я пытаюсь подключить мой localhost, получив следующую ошибку:

"Плагин аутентификации" caching_sha2_password "не может быть загружен: /usr/lib/mysql/plugin/caching_sha2_password.so: невозможно открыть файл общих объектов: нет такого файла или каталога"

Error Screenshot

и даже это первый раз, когда я отправляю вопрос в stackoverflow, извините за ошибки и синтаксис презентации.

Ответ 1

Поэтому я нашел причину этого сообщения об ошибке (по крайней мере, для моего случая). Это потому, что MySQL начиная с версии 8.04 и далее использует caching_sha2_password качестве плагина аутентификации по умолчанию, где ранее использовался mysql_native_password.

Это, очевидно, вызывает проблемы совместимости со старыми службами, которые ожидают аутентификацию mysql_native_password.

Решения:

  1. Проверьте обновленную версию клиентской службы, которую вы используете (например, в последнем рабочем месте).

  2. Обновите сервер MySQL до версии ниже этого изменения.

  3. Измените плагин аутентификации для каждого пользователя (я не нашел глобальную опцию, возможно, она существует).

Теперь относительно варианта 3 это так же просто, как изменить пользователя:

ALTER USER user
IDENTIFIED WITH mysql_native_password
BY 'pw';

или при создании пользователя:

CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

См. Блог сервера MySQL

См. Oracle

Ответ 2

Ниже приведены некоторые подробности: этот плагин caching_sha2_password - это новый плагин аутентификации по умолчанию на сервере MySQL 8. Только библиотека libmysql из этого дистрибутива MySQL 8 владеет этим плагином, и она встроена в libmysql - C-коннектор для разных клиентов. Это caching_sha2_password недоступно отдельно для загрузки.

Это первый раз, когда libmysql имеет важный плагин, статически включаемый. И это заставляет любые другие libmysql (включая libmariadb, а также более старые libmysql) не подключаться к MySQL 8 с пользователем, который определен для использования аутентификации caching_sha2_password.

Я просто надеюсь, что ребята из MariaDB настолько хороши, что также включают этот caching_sha2_password в свой libmariadb, чтобы восстановить совместимость между MySQL и MariaDB.

Из блога сервера MySQL:

Поддержка caching_sha2_password была добавлена в MySQL 8.0.3. Старые версии libmysqlclient не поддерживают этот плагин. Таким образом, хотя клиентские инструменты, которые используют libmysqlclient старше одного, доступного с MySQL 8.0.3, могут подключаться к MySQL 8.0.4 серверу, используя пользователей, которые используют другие плагины для аутентификации, такие как mysql_native_password или sha256_password, такой клиент не может подключиться к MySQL 8.0.4 серверу, используя пользователей которые требуют поддержки caching_sha2_password. Для обновленной базы данных это означает, что подключение с использованием существующей учетной записи пользователя не должно сталкиваться с какими-либо проблемами.

Ответ 3

В файле my.cnf добавьте следующую строку:

default-authentication-plugin=mysql_native_password

затем перезапустите сервер.