MySQL 8.0サーバーとphpMyAdminをインストールしましたが、ブラウザーからアクセスしようとすると、次のエラーが発生します。
#2054 - The server requested authentication method unknown to the client
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
強力なパスワードが実装されていることと、MySQLリリースの相対的な新しさが関係しているに違いないと思います。
しかし、私は最も先進的なドライバーと接続構成の何も知りません。
誰かが同じ問題に直面し、それを解決しましたか? :D
編集
aptでインストール
apt-get install mysql-server phpmyadmin
rootユーザーでMySQLコンソールにログインします。
root@9532f0da1a2a:/# mysql -u root -pPASSWORD
そしてそこのパスワードで認証プラグインを変更します:
mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
Query OK, 0 rows affected (0.08 sec)
MySQL 8.0リファレンスマニュアルで優先認証プラグインに関する詳細情報を読むことができます
docker化された環境で完全に動作しています:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -p 3306:3306 -d mysql:latest
docker exec -it mysql bash
mysql -u root -pPASSWORD
ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
exit
exit
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest
そのため、ルート/パスワードで http:// localhost:808 でphpMyAdminにログインできるようになりました
mysql/mysql-server
mysql/mysql-server docker imageを使用している場合
しかし、覚えておいてください、これは開発環境での「迅速で汚い」ソリューションです。 MySQL Preferred Authentication Plugin 。を変更するのは賢明ではありません
docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_Host=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest
2018年4月10日に更新されたソリューション
default_authentication_plugin=mysql_native_password
の/etc/my.cnf
設定のコメントを解除して、MySQLのデフォルト認証プラグインを変更します
ご自身の責任で使用してください
docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_Host=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest
2019年1月30日に更新された回避策
docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_Host=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest
新しいMySQL 8.0.11は、デフォルトの認証方法としてcaching_sha2_password
を使用しています。 phpMyAdminはこの認証方法を理解できないと思います。古い認証方法のいずれかでユーザーを作成する必要があります。 CREATE USER xyz@localhost IDENTIFIED WITH mysql_native_password BY 'passw0rd'
。
詳細はこちら https://dev.mysql.com/doc/refman/8.0/en/create-user.html およびこちら https://dev.mysql.com/doc/ refman/8.0/en/authentication-plugins.html
別のアイデア:phpmyadminおよびその他のphpツールが動作しない限り、この行をファイル/etc/mysql/my.cnfに追加するだけです
default_authentication_plugin = mysql_native_password
参照: Mysql Ref
これはセキュリティ上の問題であることは知っていますが、ツールがcaching_sha2_passwordで動作しない場合はどうすればよいですか?
私は次のことを行ってこの問題を解決しました。
default_authentication_plugin = mysql_native_password
を追加しますCREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
などの操作を行って新しいユーザーを作成しますGRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost';
、次にFLUSH PRIVILEGES;
システムに行きました
設定-> mysql->データベースの初期化->(強力ではなく)従来のパスワード暗号化を使用->同じパスワードを入力
config.inc.php
ファイルとして、Apacheサーバーを再起動すると動作しました。私はまだそれについて疑っていたので、Apacheとmysqlサーバーを停止し、それらを再び起動しましたが、現在は機能しています。
私は基本的にアンドラスの答えで問題を解決しました:
1- rootユーザーでMySQLコンソールにログインします。
root@9532f0da1a2a:/# mysql -u root -pPASSWORD
そして、認証するルートのパスワードを入力します。
2-新しいユーザーを作成しました:
mysql> CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';
3-すべての特権を新しいユーザーに付与します。
mysql> GRANT ALL PRIVILEGES ON *.* To 'user'@'hostname';
4-パスワードを使用して認証プラグインを変更します。
mysql> ALTER USER user IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
これで、phpmyadminは新しいユーザーのログを正常に処理します。
この問題が発生し、Windowsでiniファイルが見つかりませんでしたが、私にとって有効な解決策は非常に簡単でした。
1。 mysqlインストーラーを開きます。
2。 mysqlサーバーを再構成します。これが最初のリンクです。
3。認証方法に進みます。
4。 「レガシー認証」を選択します。
5。パスワードを入力してください(次のフィールド)。
6。変更を適用します。
それだけです、私の解決策があなたにとってもうまくいくことを願っています!
この問題を解決するには、mysql
コンソールで1つのクエリを実行するだけです。
これを使用してmysqlコンソールにログインするには
mysql -u {username} -p{password}
この後、次のように1つのクエリを実行します。
ALTER user '{USERNAME}'@'localhost' identified with mysql_native_password by '{PASSWORD}';
このクエリを実行すると、クエリが実行されたというメッセージが表示されました。次に、ユーザー名/パスワードを使用してPHPMYADMINにログインします。
私は以下を行うことでこの問題を解決しました:
システム設定を入力-> mysql
「データベースの初期化」を選択し、「レガシーパスワード暗号化を使用」を選択して新しいルートパスワードを入力します。
新しいパスワードでphpmyadminにログインします。
公式のmysqlドッカーコンテナを使用している場合、簡単な解決策があります。
Docker-composeサービスに次の行を追加します。
command: --default-authentication-plugin=mysql_native_password
設定例:
mysql:
image: mysql:8
networks:
- net_internal
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=db
command: --default-authentication-plugin=mysql_native_password
@kgrが述べたように、MySQL 8.0.11は認証方法にいくつかの変更を加えました。
これに関するphpMyAdminバグレポートを開きました: https://github.com/phpmyadmin/phpmyadmin/issues/1422 。
MySQL 8.0.4-rcは私にとってはうまく機能していたので、MySQLがパッチレベルリリースでこのような変更を行うのはおかしいと思います。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';
コマンドラインからログインすると、その後動作します。
多くの人が他の回答で指摘したように、 MySQLのデフォルト認証プラグインをネイティブに変更する はトリックを行います。
それでも、新しいcaching_sha2_passwordプラグインを使用できないため、トピックを閉じるために互換性が開発されるまで待ちます。
次を実行して、MySQL 8.0.12でこれを解決しました。
mysql_upgrade -u root
私の場合、それを修正するには、PhpMyAdminで使用する新しいユーザーを作成することをお勧めします。これは、rootユーザーを変更すると、MySQL WorkBenchなどの他のアプリケーションでネイティブログインの問題が発生するためです。
これは私がやったことです:
mysql -u root -p
を使用してMySQLコンソールにログインし、パスワードを入力します。CREATE USER 'newMySqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlNewUsernamePassword';
newMysqlUsername
には、データベースを操作する権限がありません。ユーザーに必要な情報へのアクセスを提供するために必要です。GRANT ALL PRIVILEGES ON * . * TO ' newMySqlUsername'@'localhost';
FLUSH PRIVILEGES;
quit
または\q
と入力してログアウトすると、変更が有効になり、新しいユーザーでPhpMyAdminにログインでき、データベースにアクセスできるようになります。
また、ターミナルで次のコマンドを使用して再度ログインできます。
mysql -u newMySqlUsername -p
UがWindowsで実行されている場合、msiを実行してインストールを再構成することにより、認証を変更できます。デフォルトの認証をレガシーに変更するように求められます。その後、認証をレガシーに変更するためにそのオプションを続行できます。
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
を使用しました