web-dev-qa-db-ja.com

認証プラグイン 'caching_sha2_password'をロードできません

MySQL - 8.0をMySQL Workbenchに接続しているときに、以下のエラーが表示されます。

認証プラグイン 'caching_sha2_password'をロードできません:dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so、2):image not found

他のクライアントツールでも試しました。

これに対する解決策はありますか?

286
Aman Aggarwal

下記のAlterコマンドでユーザーを変更することでユーザーのパスワードの暗号化を変更することができます。

ALTER USER 'username' @ 'ip_address'は 'password'によってmysql_native_passwordで識別されます。

_または_

このエラーを回避するには、古いパスワードプラグインを使用します。

最初にLinuxの場合は my.cnfファイル、Windowsの場合はmy.iniファイルの認証プラグインを変更します

[mysqld]

default_authentication_plugin = mysql_native_password

Mysqlサーバーを再起動して変更を有効にし、MySQLを介して任意のmysqlクライアントに接続してみます。

それでも接続できず、以下のエラーが発生する場合:

Unable to load plugin 'caching_sha2_password'

それはあなたのユーザーが上記のプラグインを必要としていることを意味します。デフォルトのプラグインを変更した後は、create userまたはgrantコマンドで新しいユーザーを作成してみてください。それから新しいユーザーはネイティブプラグインを必要とし、あなたはMySQLを接続することができます。

ありがとう

76
Aman Aggarwal

注:MAC OSの場合

  1. システム環境設定>データベースの初期化>からMySQLを開きます。
  2. 新しいパスワードを入力してください。
  3. [従来のパスワードを使用する]を選択します
  4. サーバーを再起動してください。
  5. MySQL Workbenchに接続しましょう

Image description

196
Santhosh Sivan

このようにしてパスワードの暗号化を変更できます。

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

現在(2018/04/23)、開発リリースをダウンロードする必要があります。 GAは動作しません。

最新のGAバージョン(6.3.10)に接続できませんでした。

これはmysql-workbench-community-8.0.11-rc-winx64.msiと連携していました( https://dev.mysql.com/downloads/workbench/ 、tab 開発リリース から)。

68
Montecarlo

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 構成を次のように変更することもできます。

[mysqld]

default_authentication_plugin = mysql_native_password

MySQLサーバを再起動してワークベンチをもう一度開きます。

67
Araz Ghazaryan

私は同じ問題を抱えていましたが、Aman Aggarwalによる答えはmysql 8.Xを実行しているDockerコンテナでは私のために働きませんでした。私はコンテナに夢中

docker exec -it CONTAINER_ID bash

その後、rootとしてmysqlにログインします。

mysql --user=root --password

Rootのパスワードを入力します(デフォルトは 'root'です)最後に以下を実行します。

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

これで準備は完了です。

41
axelferreira

私はWindows 10 PCに " MySQL Web Installer "を使ってMySQLをインストールしていましたが、MySQLワークベンチを使って接続しようとしたときに同じ問題に直面していました。サーバをインストーラウィンドウから再設定することで問題を解決しました。

MySQL Web Installer - Home Screen

[再設定]オプションをクリックすると、サーバーを再設定できます。 「認証方法」が表示されるまで、[次へ]をクリックします。

MySQL Installer - Authentication Method

このタブに移動したら、2番目のオプション「レガシ認証方法を使用する(MySQL 5.x互換性を保持)」を使用します。

他のすべてを現状のままにして、それが私が私の問題を解決した方法です。

38
ImtiazeA

このような?

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を使用することをお勧めします。

29
井上智文

MySQLコマンドラインクライアントを開く

新しいパスで新しいユーザーを作成します

一番上のbinフォルダへのパスの例を考えてみると、これはコマンドPromptで1行ずつ実行する必要があるコードです。

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にアクセスできます(新しいlocalhost接続を作成し、新しい認証情報を使用してプログラムの使用を開始した後で、それを実行できるはずです)。

上記のユーザー名(ネイティブユーザー)で新しいローカルホスト接続を設定し、パスワード(new_password)を使用してログインします。

Image

礼儀:Career365チームが回答したUDEMYのよくある質問

16
Ahmed Ziyad

わかりました、これで多くの時間を浪費した従ってここに 2019年3月19日のように要約があります

Dockerイメージを MySql 8+ で使用し、次に SequelPro を使用してそのDockerコンテナで実行されているデータベースにアクセスしようとしているのであれば、不運です。

sequelpro issue 2699を参照してください

私の設定はdocker desktop 2.0.3.0(mac - mojave)を使ったsequelpro 1.1.2で、mysql:latest(v8.0.15)を使ってみました。

他の人が報告しているように、mysql 5.7を使用することは何も必要としないで動作します。

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

もちろん、dockerでMySql 8+を使用することは可能です、そしてその状況で(必要なら)、caching_sha2_passwordタイプの問題のためにここに提供される他の答えはうまくいきます。しかし、sequelproは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;
16
arcseldon

DockerまたはDocker Composeを使用している場合、MySQLイメージのバージョンを設定していないため、このエラーが発生しました。 Dockerは自動的に最新バージョンの8を入手しようとします。

MySQLを5.7に設定してイメージを再構築したところ、正常に動作しました。

version: '2'
services: 
  db:
   image: mysql:5.7
12
Dylan Pierce

これは私の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"

関連する行は entrypoint です。

ビルドしてそれを完成させたら、次のようにテストすることができます。

$ 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 |
+---+
11

Windows 10の場合

  1. ** C:\ ProgramData\MySQL\MySQL Server 8.0 **の my.ini fileを変更します。**

[mysqld] default_authentication_plugin = mysql_native_password

  1. MySQLサービスを再起動します

  2. コマンドラインでMySQLにログインし、MySQLで次のコマンドを実行します。

  3. 新しいユーザーを作成する

CREATE USER 'user' @ 'localhost' IDENTIFIED 'password';

  1. すべての特権を付与

すべての特権を*。*に 'user' @ 'localhost'に付与します。

  1. MySQLワークベンチを開き、新しいユーザー認証情報を使用して新しい接続を開きます。

私は同じ問題に直面していて、これはうまくいきました。

10
Preetham

これはWindows 10にMySQL 8.0をインストールした後に私にとってうまくいった解決策です。

MySQLのユーザー名がroot、パスワードがadminだとします。

コマンドプロンプトを開き、次のコマンドを入力します。

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

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

'admin'によってmysql_native_passwordで識別されるユーザー 'root' @ 'localhost'の変更

7
Pratik Patil

私にとっては、プロジェクトでDockerイメージmysql:latest(バージョン5で正常に動作していた)を使用していたため、後のビルドで最新バージョンがバージョン8に切り替えられたため、これが起こり始めました 動作を停止しました 。 I イメージをmysql:5に変更 そして私は このエラーが発生しなくなった でした。

6
alberto56

私のようにGitLab CIでこのエラーが発生した場合

# .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!)
6
Bruno Casali

ほとんど上の答えと似ていますが、単純な問い合わせであるかもしれません、私はMySQLのアップグレード後にhibernateと共に私のスプリングブートアプリケーションでこのエラーを得ていました。以下のクエリをDBに対して実行して、新しいユーザーを作成しました。これは最新の優れた認証caching_sha2_passwordの代わりにsha256_passwordを使用するための一時的な回避策であると思います。

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

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

Mac用のMySQL Workbench 8.0.11ではこれに対処しています。 dockerで実行されているrootパスワードで保護されたmysqlインスタンスとの接続を確立できます。

4
Benjamin Lin

私のSQLコマンドpromtを開きます。

step 1

それからmysqlパスワードを入力してください

step 2

最後に使用:

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

参照してください: https://stackoverflow.com/a/49228443/6097074

ありがとう。

3
ankit

見つけた

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

単独では機能しませんでした。私も設定する必要がありました

[mysqld]
    default_authentication_plugin=mysql_native_password

PHP 7.0を実行しているUbuntu 18.04の/etc/mysql/mysql.conf.d/mysqld.cnf

2
Darrell Duane

このエラーは、使用しているツールがMySQL 8と互換性がない場合に表示されます。MySQL8用の最新バージョンのMySQL Workbenchに更新してみてください。

1
Shammoo

以下の解決策は私のために働いた enter image description here

Mysqlワークベンチに移動します - >サーバー - >ユーザーと特権1.アカウントの追加をクリックします

2. [ログイン]タブの下に新しい詳細が表示され、認証タイプを standard として選択し、それぞれの管理ロールとスキーマ特権を選択します。

enter image description here

1
Deepak rkm

別のコンピューターのテキストベースのMySQLクライアントからMySQLサーバーに接続しようとしている場合(Dockerであるかどうかにかかわらず)

ここでの回答のほとんどは、デスクトップクライアントからの接続、または古い認証方法への切り替えを求めるものです。 MySQLクライアント(テキストベース)に接続する場合は、Dockerコンテナ内のDebian Busterで動作するようにしました。

Aptシステムとwgetがセットアップされているとします。次の手順を実行します。

  1. Sudo apt-get update
  2. Sudo apt-get install lsb-release -y
  3. MySQL Webサイト からaptソースを更新するDebianパッケージをダウンロードします。
  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クライアントを実行し、新しい認証方法で接続できます。
0
huggie

8.0.11-rcの開発版をダウンロードすることは私にとってはMac上でうまくいきました。以下のdockerコマンドを使用します。

docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql
0
Daniel Adigun