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


435

MySQL-8.0をMySQL Workbenchに接続すると、次のエラーが発生します。

認証プラグイン 'caching_sha2_password'をロードできません:dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so、2):画像が見つかりません

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

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


2
MySQL 8.0をmysql_native_passwordモードで実行するように構成すると、この問題を修正できる場合があります。
レイモンドナイランド

6
正解です。キャッシュされたsha2パスワードを使用できるようにするには、MySQL Workbenchにコネクターのアップデートが必要です(近日提供予定)。
Mike Lischke 2018年

7
デフォルトのログインをネイティブに設定して再起動すると、問題が解決せず、ログインして新しいユーザーを作成できません。驚いたことに、2018年にMysqlとワークベンチをインストールしても、箱がなくなることはありません。粗悪な品質管理。
ChrisR 2018年

1
32ビットのmysqlクライアントライブラリが存在しないという印象をどこから得たのかはわかりませんが、そうではありません。事実、MySQL Workbenchには32ビットバージョンが付属しなくなりました。
Mike Lischke

2
より弱い暗号化を使用することを示唆するこれらの答えは、正しい方法ではありません。tableplusなどの他のクライアントを使用します。
ohkts11

回答:


279

注:MAC OSの場合

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

Image description


これはOSXで役立ちました
Salam

2
この仕事、ありがとう。MySQLワークベンチはレガシーパスワード暗号化を使用してDBサーバーに接続するため、これは機能すると思います。MySQLをインストールし、推奨される強力なパスワード暗号化の代わりにレガシー暗号化を選択するときにも実行できます。
monkSinha 2018年

1
一部のバージョンのmysqlには異なる設定パネルがあり、これは機能しません
Michael Yang

8
以前の安全性の低い認証に戻る広告は、まったく良いソリューションではありません
Mike Lischke

63
システム環境設定にMySQLがありません
JavaRunner 2018

248

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

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

33
OPが新しいクールな認証方法を使用したい場合はどうなりますか?
LibertyPaul

@twocold、nice script query。+ 1
Md Haidar Ali Khan

コードに@twocoldで示されているように、yourusernameとyourpasswordは単一引用符で囲む必要があります。
マトリックス

@twocoldそれを行って機能しない場合、上記のALTER USERをどのように「元に戻し」、MySQL 8.0標準(新しい暗号化レベル)に戻しますか?
ベルデン、

1
@BrianFitzGerald「caching_sha2_password」ですここまたはここにリンクしください
Yan Karin

114

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サーバーを再起動し、ワークベンチを再度開きます。


1
my.iniを変更しても機能しませんでしたが、コマンドプロンプトを変更しても機能しました。
アメルビン、

my.iniを変更すると問題が解決します。ありがとう。
バーカント

my.iniファイルの場所:stackoverflow.com/a/20311286/923560
Abdull

私はちょうど設定は、リモートのMySQLサーバーへのWindowsから接続するために接続したいというサーバー、および私のために働いたのALTER USERで行われなければならないことに注意したい
Alcidesの

Windows 10に限定されません
Geza Turi

76

以下のAlterコマンドでユーザーを変更することにより、ユーザーのパスワードの暗号化を変更できます。

ALTER USER 'username' @ 'ip_address'で識別されたmysql_native_password BY '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に接続できます。

ありがとう


5
確かにそれはプラグインを逃すと、問題の解決策ではありません。
LibertyPaul

1
そうです。問題は、DB管理ソフトウェアがまだ対応していないことです。したがって、mysqlワークベンチ開発者でない限り、これが今のところ回避策です。
Kevin Gagnon、

私のために働いた。おかげで
ルーカスアラウージョ

設定フラグを追加した後に新しいユーザーを作成することに関する部分は重要です。
ニッポン2006年

70

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

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

動作しましたmysql-workbench-community-8.0.11-rc-winx64.msihttps://dev.mysql.com/downloads/workbench/から、[ 開発リリース ]タブ)。


4
これは実際に正しい答えです。MySQL8.0にはMySQL Workbench 8.0が必要ですが、残念ながらまだベータモードのようです。ただし、インストールすると、新しいSHAパスワード暗号化を使用できます。何も変更する必要はありません。
クリスティS.

ベータ版ではなくリリース候補版(RC)。GA(正式リリース)バージョンが間もなく登場します。
Mike Lischke

私にとって最高のアイデア。
Wojciech Fornal

2
これはまだ事実です。GAバージョンをインストールしても、推奨されるパスワード暗号化を使用してログインできなくなります。GAバージョンがレガシー認証のみで機能するという警告はありません。
ドナルドリッチ

2
少なくともMacOSでは、GAバージョンは現在8.0.12(2018/08/13)であり、問​​題を解決しています!ありがとう!
Bruno Silvano

63

私も同じ問題を抱えていましたが、Aman Aggarwalの答えは、mysql 8.Xを実行しているDockerコンテナでは機能しませんでした。コンテナにログインしました

docker exec -it CONTAINER_ID bash

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

mysql --user=root --password

rootのパスワードを入力します(デフォルトは「root」です)最後に実行します:

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

これで準備は完了です。


これは、私が探しているものに対する良い答えになる可能性があるようです。しかし、これが何であるかはわかりません。受け入れられた答えを意味しますか?または別のもの...
Zach Smith

1
はい@ZachSmith、「これ」は受け入れられた回答者を指します。
axelferreira 2018

シェルdocker exec -it CONTAINER_ID mysql --user=root --passwordの存在に依存する2つのコマンドbash(将来は確実ではない)の代わりにどうですか?
エリック

これは、Dockerデスクトップ2.0.3.0(Mac)を使用するsequelpro 1.1.2では機能しませんでした。コマンドはすべて機能しますが、ログイン時に後のプロエラーが発生します-mysql:latest(v8.0.15)を使用
arcseldon

他の人が報告したように、mysql 5.7の使用は何も必要なく機能します:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
arcseldon

47

わかりました、これに多くの時間を無駄にしたので、ここに2019年3月19日現在の要約があります

MySql 8+でDockerイメージを使用し、SequelProを使用してそのDocker コンテナーで実行されているデータベースにアクセスしようとしている場合は、うまくいきません。

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

私のセットアップは、Dockerデスクトップ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;

1
これを共有してくれてありがとう。MySQL開発コンテナを誤って削除した後、私はまったく同じコンボを試しました。
martn_st 2019年

1
。それは、すでに2019年にある間、続編Proは積極的に、2016年4月3日のために日付を記入もう:(最新のニュースを開発していないことは非常に悲しいそれは私がMySQLの探検家のために見た中で最高のツールでした。
Oleksii Shnyra

@OleksiiShnyra true数年の量産リリースはありませんが、参考までに、新しい「夜間」リリースが利用可能です。sequelpro.com/test-buildsおよび経由brew cask install homebrew/cask-versions/sequel-pro-nightly
Peter W

コマンドライン(mysqlクライアント)とALTERmyslq.userテーブルを介してログインできるユーザーのために、SequelProを機能させるための回避策があります。github.com / sequelpro
Peter W

MySQL 8を使用していてmysql_native_password、にダウングレードしたくない場合は、次のようにしてください:stackoverflow.com/a/56402217/2321594
Aidin

46

MySQL Webインストーラー」を使用してWindows 10 PCにMySQLをインストールしていて、MySQLワークベンチを使用して接続しようとしたときに同じ問題に直面していました。インストーラーウィンドウからサーバーを再構成して問題を修正しました。

MySQL Webインストーラー-ホーム画面

「再構成」オプションをクリックすると、サーバーを再構成できます。「認証方法」に到達するまで「次へ」をクリックします。

MySQLインストーラ-認証方法

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

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


1
mysql-8.0.11-winx64.zipを手動で解凍し、「caching_sha2_passwordをロードできません」という問題を簡単に解決できません。ただし、mysql-installer-community-8.0.11.0.msiを使用し、上記の推奨に従っている場合、MySQL Workbench 8.0.11はMySQLサーバー8.0.11にログインできます。
oraclesoon 2018年

38

このような?

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を使用する必要があります。


3
--default-authentication-plugin = mysql_native_passwordの追加は魅力のように機能します<3感謝
トーマスウェバー

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

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

上のbinフォルダーへのパスの例を考慮して、コマンドプロンプトで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)を使用してログインします。

画像

礼儀:Career365チームが回答したUDEMY FAQ


これはうまくいきました。どうして?で接続しようとしてrootパスワードを入力しないと、このエラーが発生しましたSequel Pro。コマンドラインでは機能しましたが、では機能しませんでした。
Volte、2018

チャームのように動作し、スレッドスタートの質問と完全に関連します。注意してください。Macos Catalina、docker 19.03、mysql最新イメージが必要です。このコマンドを除外します$ docker run -p 3306:3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = password mysql / mysql-server(dzone Webサイトから)。
バンザイ

13

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

MySQLを5.7に設定してイメージを再構築したところ、通常どおり機能しました。

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

3
バージョン5の代わりにバージョン8を使用する正当な理由があります。バージョン5の代わりにバージョン8を使用したいので、このページにいます
Zach Smith

2
私の問題を解決するmysql:5.7代わりに使用するmysql:latest
Francesco Borzi

13

これは私の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. my.iniファイルを変更C:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. MySQLサービスを再起動します。

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

    • 新しいユーザーを作成します。

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • すべての特権を付与します。

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. MySQLワークベンチを開き、新しいユーザー認証情報を使用して新しい接続を開きます。

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


9

これは、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

ALTER USER 'root' @ 'localhost'で識別されるmysql_native_passwordで 'admin'


8

私のような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!)

7

見つけた

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内


これはCentos 7で機能しました。何らかの理由で、私のパスワードはデフォルトでcache_sha2_passwordとして保存され、phpMyAdminでログインしようとするとエラー#1251が発生しました。
DaFudgeWizzad


6

私にとって、これはプロジェクトでDockerイメージmysql:latest(バージョン5であり、正常に機能していた)を使用していて、その後のビルド中に最新バージョンがバージョン8に切り替えられて機能しなくなったために起こりました。私は、MySQLへの私のイメージを変えない:5と私はして、もはやこのエラーを取得します


頭の上!ありがとう。
brcebn 2018

6

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


5

上記の回答とほとんど同じですが、簡単なクエリの可能性がありますが、MySQLのアップグレード後に、スプリングブートアプリケーションでhibernateとともにこのエラーが発生していました。DBに対して以下のクエリを実行して、新しいユーザーを作成しました。これは、最新の適切な認証cache_sha2_passwordではなく、sha256_passwordを使用するための一時的な回避策だと思います。

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

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

4

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


これは私のためにそれを修正したものです。8.0サーバーで古いMySQL Workbench 6.3を実行していました。ここでの多くの答えはサーバーの互換性をダウングレードすると述べていますが、私はWorkbenchのバージョンを最新の8.0リリース(現在は8.0.15)にアップグレードしただけです。
なし合計

4

これは実際の 解決策ではありませんが、行き詰まっている場合はローカルで機能します

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

1
これは問題を解決します。
kta

2

以下の解決策は私のために働きました ここに画像の説明を入力してください

Mysql Workbench-> Server-> Users and Privilegesに移動します。1. Add Accountをクリックします。

2.「ログイン」タブで新しい詳細を提供し、認証タイプを標準として選択し、それぞれの管理ロールとスキーマ特権を選択してください

ここに画像の説明を入力してください


2

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

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

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クライアントを実行して、新しい認証方法で接続できます。

これはWSLの問題に対する正解でした。ありがとうございます。
Andrew Landsverk

1

MySqlをダウンロードしてインストールするときにレガシーパスワードを使用してみてください。または、Mac OS用にSanthosh Shivanが投稿した方法に従ってください。


0

Macでは、8.0.11-rcの開発リリースをダウンロードすることがうまくいきました。次のdockerコマンドを使用します。

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

-3

MySQL 5.7をインストールしてこの問題を解決しました。

ステップ1 – MySQLリポジトリを有効にする

まず、システムでMySQL 5.7コミュニティリリースのyumリポジトリを有効にする必要があります。yumリポジトリー構成用のrpmパッケージは、MySQL公式Webサイトで入手できます。オペレーティングシステムのバージョンに応じて、以下のコマンドを使用します。

CentOSおよびRHEL 7の場合

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

CentOSおよびRHEL 6の場合

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm

Fedora 27の場合

dnf install https://dev.mysql.com/get/mysql57-community-release-fc27-9.noarch.rpm

Fedora 26の場合

dnf install https://dev.mysql.com/get/mysql57-community-release-fc26-9.noarch.rpm

Fedora 25の場合

dnf install https://dev.mysql.com/get/mysql57-community-release-fc25-9.noarch.rpm

ステップ2 – MySQL 5.7サーバーのインストール

システムでMySQL yumリポジトリを正常に有効にしたので。次に、オペレーティングシステムのバージョンに応じて、次のコマンドを使用してMySQL 5.7コミュニティサーバーをインストールします。

CentOSおよびRHEL 7/6の場合

yum install mysql-community-server

Fedora 27/26/25の場合

 dnf install mysql-community-server

ソース:https : //tecadmin.net/install-mysql-5-7-centos-rhel/


-5

以前のインストール(MySQL Community Server 5.7およびWorkbench 6.1)にロールバックし、新しいMySQL資格情報を設定するとうまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.