Плагин аутентификации caching_sha2_password не может быть загружен

Я соединяю MySQL - 8.0 с MySQL Workbench и получаю следующую ошибку:

Плагин аутентификации caching_sha2_password не может быть загружен: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): изображение не найдено

Я пробовал и с другим клиентским инструментом.

Любое решение для этого?

39 ответов

Решение

Вы можете изменить шифрование пароля пользователя, изменив пользователя с помощью следующей команды Alter:

ALTER USER 'username' @ 'ip_address', ИДЕНТИФИЦИРОВАННЫЙ С mysql_native_password BY 'password';

ИЛИ ЖЕ

Мы можем избежать этой ошибки, заставив ее работать со старым плагином пароля:

Сначала измените плагин аутентификации в файле my.cnf для файла Linux / my.ini в Windows:

[ТуздЫ]

default_authentication_plugin = mysql_native_password

Перезапустите сервер mysql, чтобы изменения вступили в силу, и попробуйте подключиться через MySQL к любому клиенту mysql.

Если по-прежнему не удается подключиться и получить сообщение об ошибке ниже:

Unable to load plugin 'caching_sha2_password'

Это означает, что вашему пользователю нужен вышеуказанный плагин. Поэтому попробуйте создать нового пользователя командой create user или grant после изменения плагина по умолчанию. тогда новому пользователю понадобится родной плагин, и вы сможете подключить MySQL.

Спасибо

Вы можете изменить шифрование пароля, как это.

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';

Примечание: для MAC OS

  1. Откройте MySQL из Системных настроек> Инициализировать базу данных>
  2. Введите новый пароль.
  3. Выберите "Использовать старый пароль"
  4. Запустите сервер снова.
  5. Теперь подключите MySQL Workbench

Для Windows 10: откройте командную строку

cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"

C:\Program Files\MySQL\MySQL Server 8.0\bin> mysql -u root -p
Enter password: *********

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newrootpassword';
Query OK, 0 rows affected (0.10 sec)

mysql> exit

Кроме того, вы можете изменить конфигурацию my.ini следующим образом:

[ТуздЫ]

default_authentication_plugin = mysql_native_password

Перезапустите MySQL Server и снова откройте Workbench.

У меня была та же проблема, но ответ Амана Аггарвала не сработал для меня с контейнером Docker, на котором запущен mysql 8.X. Я вошел в контейнер

docker exec -it CONTAINER_ID bash

затем войдите в MySQL как root

mysql --user=root --password

Введите пароль для пользователя root (по умолчанию "root"). Наконец, выполните:

ALTER USER 'username' IDENTIFIED WITH mysql_native_password BY 'password';

Вы все готово.

Хорошо, потратил много времени на это, так что вот резюме по состоянию на 19 марта 2019 года

Если вы специально пытаетесь использовать образ Docker с MySql 8+, а затем используете SequelPro для доступа к вашим базам данных, запущенным в этом контейнере, вам не повезло.

Смотрите выпуск 2699 sequelpro

Моя установка sequelpro 1.1.2 с использованием Docker Desktop 2.0.3.0 (Mac - Mojave), и попытался с помощью mysql:latest (v8.0.15).

Как сообщали другие, использование mysql 5.7 работает без необходимости:

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7

Конечно, можно использовать MySql 8+ на докере, и в этой ситуации (при необходимости), другие ответы, предоставленные здесь для caching_sha2_password проблемы типа действительно работают. Но сиквельпро НЕТ GO с MySql 8+

Наконец, я отказался от sequelpro (надежного друга из 2013-2014 годов) и вместо этого установил DBeaver. Все работало из коробки. Для докера я использовал:

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --default-authentication-plugin=mysql_native_password

Вы можете быстро просмотреть базы данных mysql, используя:

docker exec -it mysql1 bash

mysql -u root -p

show databases;

В настоящее время (на 2018/04/23) вам необходимо загрузить разрабатываемый выпуск. GA не работают.

Мне не удалось подключиться к последней версии GA (6.3.10).

Работал с mysql-workbench-community-8.0.11-rc-winx64.msi (из https://dev.mysql.com/downloads/workbench/, вкладка " Релизы для разработчиков").

Примечание: для Linux (Debian, Ubuntu, Mint)

У меня такая ошибка:

MySQL Error Message: Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

Я решил с помощью следующих шагов:

  1. Введите в консоли mysql: $ mysql -u root -p, если у вас нет пароля для пользователя root, тогда:

  2. Используйте mysql db: mysql> use mysql;

  3. Измените своего пользователя для решения проблемы: mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

  4. Выход... mysql> quit;

  5. Готово!

Я устанавливал MySQL на свой компьютер с Windows 10 с помощью " MySQL Web Installer" и столкнулся с той же проблемой при попытке подключения с использованием MySQL Workbench. Я исправил проблему, перенастроив сервер из окна установщика.

MySQL Web Installer - домашний экран

Нажав на опцию "Reconfigure", вы сможете перенастроить сервер. Нажимайте "Далее", пока не достигнете "Метод аутентификации".

MySQL Installer - Метод аутентификации

На этой вкладке используйте второй параметр "Использовать устаревший метод аутентификации (сохранить совместимость с MySQL 5.x)".

Оставьте все как есть, и вот как я решил свою проблему.

Как это?

docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql --default-authentication-plugin=mysql_native_password
mysql -uroot --protocol tcp

Попробуй в PWD

https://github.com/GitHub30/docs/blob/change-default_authentication_plugin/mysql/stack.yml

или вы должны использовать MySQL Workbench 8.0.11.

Для Windows 10

  1. Измените файл my.ini в папке ** C: \ ProgramData \ MySQL \ MySQL Server 8.0 **

[mysqld] default_authentication_plugin = mysql_native_password

  1. Перезапустите службу MySQL

  2. войдите в MySQL в командной строке, выполните следующие команды в MySQL

  3. Создать нового пользователя

СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'user'@'localhost', ИДЕНТИФИЦИРОВАННОГО 'password';

  1. Предоставить все привилегии

ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА * .* TO 'user'@'localhost';

  1. Откройте MySQL Workbench, откройте новое соединение, используя новые учетные данные пользователя

Я столкнулся с той же проблемой, и это сработало.

Открытый клиент командной строки MySQL

Создать нового пользователя с новым проходом

Рассматривая пример пути к папке bin сверху, вот код, который вам нужно запустить в командной строке, строка за строкой:

cd C:\Program Files\MySQL\MySQL Server 5.7\bin
MySQL -u root -p    
current password...***  
CREATE USER 'nativeuser'@'localhost'  
IDENTIFIED WITH mysql_native_password BY 'new_password';

-Тогда вы можете снова получить доступ к Workbench (вы сможете сделать это после создания нового локального соединения и использования новых учетных данных, чтобы начать использовать программу).

Установите новое локальное подключение к хосту с указанным выше именем пользователя (собственный пользователь), войдите в систему с помощью пароля (новый_пароль)

Образ

Вежливость: Ответы на часто задаваемые вопросы UDEMY от Career365 Team

Хотя это не должно быть реальным решением, оно работает локально, если вы застряли

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

Если вы все еще хотите использовать новый метод аутентификации, правильное решение — установить mariadb-connector-cупаковка. Для Alpine запустите:

      apk add mariadb-connector-c

Это добавит недостающее caching_sha2_password.soбиблиотека в /usr/lib/mariadb/plugin/caching_sha2_password.so.

Это мое определение базы данных в моем docker-compose:

dataBase:
    image: mysql:8.0
    volumes:
        - db_data:/var/lib/mysql
    networks:
        z-net:
            ipv4_address: 172.26.0.2
    restart: always
    entrypoint: ['docker-entrypoint.sh', '--default-authentication-plugin=mysql_native_password']
    environment:
        MYSQL_ROOT_PASSWORD: supersecret
        MYSQL_DATABASE: zdb
        MYSQL_USER: zuser
        MYSQL_PASSWORD: zpass
    ports:
        - "3333:3306"

На соответствующей строке есть точка входа.

После сборки и сборки вы можете протестировать его:

$ mysql -u zuser -pzpass --host=172.26.0.2  zdb -e "select 1;"
Warning: Using a password on the command line interface can be insecure.
+---+
| 1 |
+---+
| 1 |
+---+

Для тех, кто использует Docker или Docker Compose, я столкнулся с этой ошибкой, потому что я не установил версию своего образа MySQL. Докер автоматически попытается получить последнюю версию, которая является 8.

Я установил MySQL на 5.7 и перестроил образ, и он работал как обычно:

version: '2'
services: 
  db:
   image: mysql:5.7

Я нашел это

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

не работал сам по себе. Мне также нужно было установить

[mysqld]
    default_authentication_plugin=mysql_native_password

в /etc/mysql/mysql.conf.d/mysqld.cnf в Ubuntu 18.04 с PHP 7.0

Вот решение, которое работало для меня после установки MySQL 8.0 на Windows 10.

Предположим, что имя пользователя MySQL root и пароль admin

Откройте командную строку и введите следующие команды:

cd C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTER USER 'root' @ 'localhost' ИДЕНТИФИЦИРОВАНО С mysql_native_password BY 'admin'

Если вы получаете эту ошибку на GitLab CI, как я: просто перейдите с последней версии на 5.7;)

# .gitlab-ci.yml

rspec:
  services:
    # - mysql:latest (I'm using latest version and it causes error)
    - mysql:5.7 #(then I've changed to this specific version and fix!)

Откройте мою команду sql:

шаг 1

затем введите пароль MySQL

шаг 2

наконец, используйте:

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

см.: /questions/20083216/plagin-autentifikatsii-cachingsha2password-ne-mozhet-byit-zagruzhen/20083228#20083228

Благодарю.

Эта ошибка возникает, когда используемый инструмент несовместим с MySQL8, попробуйте обновить до последней версии MySQL Workbench для MySQL8

Для меня это начало происходить, потому что в проекте я использовал образ Docker mysql:latest (который был версии 5 и работал нормально), а во время более поздней сборки последняя версия была переключена на версию 8 и перестала работать. Я изменил свое изображение на mysql:5 и больше не получал эту ошибку.

Почти как ответы выше, но, возможно, в простых запросах, я получал эту ошибку в моем весеннем загрузочном приложении наряду с hibernate после обновления MySQL. Мы создали нового пользователя, запустив приведенные ниже запросы к нашей БД. Я полагаю, что это временная работа вокруг использования sha256_password вместо последней и хорошей аутентификации caching_sha2_password.

CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pa$$word';

GRANT ALL PRIVILEGES ON * .* TO 'username'@'localhost';

Если вы пытаетесь подключиться к серверу MySQL из текстового клиента MySQL с другого компьютера (будь то Docker или нет)

Большинство ответов здесь включают подключение с настольного клиента или просьбу переключиться на более старый метод аутентификации. Если вы подключаете его с клиентом MySQL (текстовым), я заставлю его работать с Debian Buster в контейнере Docker.

Скажем, у вас настроена система apt и wget, выполните следующие действия:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Загрузите пакет Debian, который обновляет apt для вас, с веб-сайта MySQL.
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb и выберите нужные параметры. В моем случае мне нужно только MySQL Tools & Connectors быть включенным.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. Готово. Теперь вы можете запустить новый клиент MySQL и подключиться с новым методом аутентификации.

MySQLWorkbench 8.0.11 для macOS решает эту проблему. Я могу установить соединение с защищенным паролем экземпляром mysql, запущенным в Docker.

На самом деле MySql допускает два типа аутентификации во время установки.

  1. Шифрование пароля
  2. Устаревшее шифрование

ht tps://stackru.com/images/82bdec24bc4612e2a8826483a56bd227ae40788c.png

Прочтите здесь

Итак, проверив устаревшую аутентификацию, проблема была решена.

Приведенное ниже решение работает для меня

Перейдите в Mysql Workbench -> Сервер-> Пользователи и привилегии. 1.Нажмите Добавить учетную запись.

2.На вкладке "Вход в систему" ​​представлены новые сведения и убедитесь, что в качестве стандарта выбран тип аутентификации, а также соответствующие административные роли и привилегии схемы.

Запускаю докер в M1 (arm64), прямой способ смены в docker bash у меня не работает. Вместо этого я меняю образ mysql на mysql:8.0.26и платформа установлена ​​как linux/x86_64и добавить default_authentication_plugin=mysql_native_password в my.cnf Затем вы перестраиваете свой контейнер.

Попробуйте использовать старый пароль при загрузке и установке MySql, это мне помогло. Или следуйте методу, опубликованному Santhosh Shivan для Mac OS.

Поскольку я не смог найти решение где-либо еще, я опубликую свои выводы здесь. Я смог решить эту проблему, просто выполнив следующий запрос: UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = {username}Может потребоваться перезагрузка сервера mysql, но в моем случае этого не произошло.

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