"Плагин аутентификации" 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: невозможно открыть файл общих объектов: нет такого файла или каталога"
и даже это первый раз, когда я отправляю вопрос в stackoverflow, извините за ошибки и синтаксис презентации.
Ответы
Ответ 1
Поэтому я нашел причину этого сообщения об ошибке (по крайней мере, для моего случая). Это потому, что MySQL начиная с версии 8.04 и далее использует caching_sha2_password
качестве плагина аутентификации по умолчанию, где ранее использовался mysql_native_password
.
Это, очевидно, вызывает проблемы совместимости со старыми службами, которые ожидают аутентификацию mysql_native_password
.
Решения:
-
Проверьте обновленную версию клиентской службы, которую вы используете (например, в последнем рабочем месте).
-
Обновите сервер MySQL до версии ниже этого изменения.
- Измените плагин аутентификации для каждого пользователя (я не нашел глобальную опцию, возможно, она существует).
Теперь относительно варианта 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
затем перезапустите сервер.