MySQL - 8.0をMySQL Workbenchに接続しているときに、以下のエラーが表示されます。
認証プラグイン 'caching_sha2_password'をロードできません:dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so、2):image not found
他のクライアントツールでも試しました。
これに対する解決策はありますか?
下記の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を接続することができます。
ありがとう
注:MAC OSの場合
このようにしてパスワードの暗号化を変更できます。
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
現在(2018/04/23)、開発リリースをダウンロードする必要があります。 GAは動作しません。
最新のGAバージョン(6.3.10)に接続できませんでした。
これはmysql-workbench-community-8.0.11-rc-winx64.msi
と連携していました( https://dev.mysql.com/downloads/workbench/ 、tab 開発リリース から)。
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サーバを再起動してワークベンチをもう一度開きます。
私は同じ問題を抱えていましたが、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';
これで準備は完了です。
私はWindows 10 PCに " MySQL Web Installer "を使ってMySQLをインストールしていましたが、MySQLワークベンチを使って接続しようとしたときに同じ問題に直面していました。サーバをインストーラウィンドウから再設定することで問題を解決しました。
[再設定]オプションをクリックすると、サーバーを再設定できます。 「認証方法」が表示されるまで、[次へ]をクリックします。
このタブに移動したら、2番目のオプション「レガシ認証方法を使用する(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
https://github.com/GitHub30/docs/blob/change-default_authentication_plugin/mysql/stack.yml
またはMySQL Workbench 8.0.11を使用することをお勧めします。
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)を使用してログインします。
礼儀:Career365チームが回答したUDEMYのよくある質問
わかりました、これで多くの時間を浪費した従ってここに 2019年3月19日のように要約があります
Dockerイメージを MySql 8+ で使用し、次に SequelPro を使用してそのDockerコンテナで実行されているデータベースにアクセスしようとしているのであれば、不運です。
私の設定は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;
DockerまたはDocker Composeを使用している場合、MySQLイメージのバージョンを設定していないため、このエラーが発生しました。 Dockerは自動的に最新バージョンの8を入手しようとします。
MySQLを5.7に設定してイメージを再構築したところ、正常に動作しました。
version: '2'
services:
db:
image: mysql:5.7
これは私の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 |
+---+
Windows 10の場合 、
[mysqld] default_authentication_plugin = mysql_native_password
MySQLサービスを再起動します
コマンドラインでMySQLにログインし、MySQLで次のコマンドを実行します。
新しいユーザーを作成する
CREATE USER 'user' @ 'localhost' IDENTIFIED 'password';
すべての特権を*。*に 'user' @ 'localhost'に付与します。
私は同じ問題に直面していて、これはうまくいきました。
これは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'の変更
私にとっては、プロジェクトでDockerイメージmysql:latest(バージョン5で正常に動作していた)を使用していたため、後のビルドで最新バージョンがバージョン8に切り替えられたため、これが起こり始めました 動作を停止しました 。 I イメージをmysql:5に変更 そして私は このエラーが発生しなくなった でした。
私のように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!)
ほとんど上の答えと似ていますが、単純な問い合わせであるかもしれません、私は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';
Mac用のMySQL Workbench 8.0.11ではこれに対処しています。 dockerで実行されているrootパスワードで保護されたmysqlインスタンスとの接続を確立できます。
私のSQLコマンドpromtを開きます。
それからmysqlパスワードを入力してください
最後に使用:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
参照してください: https://stackoverflow.com/a/49228443/6097074
ありがとう。
見つけた
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
このエラーは、使用しているツールがMySQL 8と互換性がない場合に表示されます。MySQL8用の最新バージョンのMySQL Workbenchに更新してみてください。
別のコンピューターのテキストベースのMySQLクライアントからMySQLサーバーに接続しようとしている場合(Dockerであるかどうかにかかわらず)
ここでの回答のほとんどは、デスクトップクライアントからの接続、または古い認証方法への切り替えを求めるものです。 MySQLクライアント(テキストベース)に接続する場合は、Dockerコンテナ内のDebian Busterで動作するようにしました。
Aptシステムとwgetがセットアップされているとします。次の手順を実行します。
Sudo apt-get update
Sudo apt-get install lsb-release -y
Sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
を選択し、必要なオプションを選択します。私の場合、有効にする必要があるのはMySQL Tools & Connectors
だけです。Sudo apt-get update
Sudo apt-get install mysql-client -y
8.0.11-rcの開発版をダウンロードすることは私にとってはMac上でうまくいきました。以下のdockerコマンドを使用します。
docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql