MySQL-8.0をMySQL Workbenchに接続すると、次のエラーが発生します。
認証プラグイン 'caching_sha2_password'をロードできません:dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so、2):画像が見つかりません
他のクライアントツールでも試しました。
これに対する解決策はありますか?
MySQL-8.0をMySQL Workbenchに接続すると、次のエラーが発生します。
認証プラグイン 'caching_sha2_password'をロードできません:dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so、2):画像が見つかりません
他のクライアントツールでも試しました。
これに対する解決策はありますか?
回答:
注:MAC OSの場合
このようにパスワードの暗号化を変更できます。
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
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サーバーを再起動し、ワークベンチを再度開きます。
my.ini
ファイルの場所:stackoverflow.com/a/20311286/923560
以下の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に接続できます。
ありがとう
現在(2018年4月23日)、開発リリースをダウンロードする必要があります。GAのものは動作しません。
最新のGAバージョン(6.3.10)に接続できませんでした。
動作しましたmysql-workbench-community-8.0.11-rc-winx64.msi
(https://dev.mysql.com/downloads/workbench/から、[ 開発リリース ]タブ)。
私も同じ問題を抱えていましたが、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';
これで準備は完了です。
docker exec -it CONTAINER_ID mysql --user=root --password
の存在に依存する2つのコマンドbash
(将来は確実ではない)の代わりにどうですか?
docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
わかりました、これに多くの時間を無駄にしたので、ここに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;
brew cask install homebrew/cask-versions/sequel-pro-nightly
。
mysql_native_password
、にダウングレードしたくない場合は、次のようにしてください:stackoverflow.com/a/56402217/2321594
「MySQL Webインストーラー」を使用してWindows 10 PCに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フォルダーへのパスの例を考慮して、コマンドプロンプトで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';
上記のユーザー名(ネイティブユーザー)で新しいローカルホスト接続をセットアップし、パスワード(new_password)を使用してログインします。
礼儀:Career365チームが回答したUDEMY FAQ
root
パスワードを入力しないと、このエラーが発生しましたSequel Pro
。コマンドラインでは機能しましたが、では機能しませんでした。
DockerまたはDocker Composeを使用している場合、MySQLイメージバージョンを設定しなかったため、このエラーが発生しました。Dockerは自動的に最新バージョンである8を取得しようとします。
MySQLを5.7に設定してイメージを再構築したところ、通常どおり機能しました。
version: '2'
services:
db:
image: mysql:5.7
mysql:5.7
代わりに使用するmysql:latest
これは私の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の場合
でmy.ini
ファイルを変更C:\ProgramData\MySQL\MySQL Server 8.0\
[mysqld]
default_authentication_plugin=mysql_native_password
MySQLサービスを再起動します。
コマンドラインでMySQLにログインし、MySQLで次のコマンドを実行します。
新しいユーザーを作成します。
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
すべての特権を付与します。
GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
MySQLワークベンチを開き、新しいユーザー認証情報を使用して新しい接続を開きます。
私は同じ問題に直面しており、これはうまくいきました。
これは、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'
見つけた
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内
私のSQLコマンドプロンプトを開きます。
次に、mysqlパスワードを入力します
最後に使用します:
ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
参照:https : //stackoverflow.com/a/49228443/6097074
ありがとう。
私にとって、これはプロジェクトでDockerイメージmysql:latest(バージョン5であり、正常に機能していた)を使用していて、その後のビルド中に最新バージョンがバージョン8に切り替えられて機能しなくなったために起こりました。私は、MySQLへの私のイメージを変えない: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';
別のコンピューター(Dockerかどうかにかかわらず)からテキストベースのMySQLクライアントからMySQLサーバーに接続しようとしている場合
ここでのほとんどの回答は、デスクトップクライアントからの接続に関するものか、古い認証方法に切り替えるように求めています。MySQLクライアント(テキストベース)に接続している場合は、Dockerコンテナー内のDebianバスターで動作させました。
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
MySqlをダウンロードしてインストールするときにレガシーパスワードを使用してみてください。または、Mac OS用にSanthosh Shivanが投稿した方法に従ってください。
Macでは、8.0.11-rcの開発リリースをダウンロードすることがうまくいきました。次のdockerコマンドを使用します。
docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql
MySQL 5.7をインストールしてこの問題を解決しました。
まず、システムでMySQL 5.7コミュニティリリースのyumリポジトリを有効にする必要があります。yumリポジトリー構成用のrpmパッケージは、MySQL公式Webサイトで入手できます。オペレーティングシステムのバージョンに応じて、以下のコマンドを使用します。
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
dnf install https://dev.mysql.com/get/mysql57-community-release-fc27-9.noarch.rpm
dnf install https://dev.mysql.com/get/mysql57-community-release-fc26-9.noarch.rpm
dnf install https://dev.mysql.com/get/mysql57-community-release-fc25-9.noarch.rpm
システムでMySQL yumリポジトリを正常に有効にしたので。次に、オペレーティングシステムのバージョンに応じて、次のコマンドを使用してMySQL 5.7コミュニティサーバーをインストールします。
yum install mysql-community-server
dnf install mysql-community-server