web-dev-qa-db-ja.com

MySQL 8.0上のphpMyAdmin

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
46
Lucas Noetzold

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リファレンスマニュアルで優先認証プラグインに関する詳細情報を読むことができます

https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

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

default_authentication_plugin

77

新しい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

23
kgr

別のアイデア:phpmyadminおよびその他のphpツールが動作しない限り、この行をファイル/etc/mysql/my.cnfに追加するだけです

default_authentication_plugin = mysql_native_password

参照: Mysql Ref

これはセキュリティ上の問題であることは知っていますが、ツールがcaching_sha2_passwordで動作しない場合はどうすればよいですか?

15
sneaky

私は次のことを行ってこの問題を解決しました。

  1. default_authentication_plugin = mysql_native_passwordを追加します
    my.cnfの[mysqld]セクション
  2. Mysqlと入力し、CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';などの操作を行って新しいユーザーを作成します
  3. 必要に応じて特権を付与します。例えば。 GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost';、次にFLUSH PRIVILEGES;
  4. 新しいユーザーでphpmyadminにログインします
12
user1706897

システムに行きました

設定-> mysql->データベースの初期化->(強力ではなく)従来のパスワード暗号化を使用->同じパスワードを入力

config.inc.phpファイルとして、Apacheサーバーを再起動すると動作しました。私はまだそれについて疑っていたので、Apacheとmysqlサーバーを停止し、それらを再び起動しましたが、現在は機能しています。

12
Claire

私は基本的にアンドラスの答えで問題を解決しました:

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は新しいユーザーのログを正常に処理します。

6
Bruno Carazato

この問題が発生し、Windowsでiniファイルが見つかりませんでしたが、私にとって有効な解決策は非常に簡単でした。
1。 mysqlインストーラーを開きます。
2。 mysqlサーバーを再構成します。これが最初のリンクです。
3。認証方法に進みます。
4。 「レガシー認証」を選択します。
5。パスワードを入力してください(次のフィールド)。
6。変更を適用します。

それだけです、私の解決策があなたにとってもうまくいくことを願っています!

5
Stephan

この問題を解決するには、mysqlコンソールで1つのクエリを実行するだけです。

これを使用してmysqlコンソールにログインするには

mysql -u {username} -p{password}

この後、次のように1つのクエリを実行します。

ALTER user '{USERNAME}'@'localhost' identified with mysql_native_password by '{PASSWORD}';

このクエリを実行すると、クエリが実行されたというメッセージが表示されました。次に、ユーザー名/パスワードを使用してPHPMYADMINにログインします。

5

私は以下を行うことでこの問題を解決しました:

  1. システム設定を入力-> mysql

  2. 「データベースの初期化」を選択し、「レガシーパスワード暗号化を使用」を選択して新しいルートパスワードを入力します。

  3. 新しいパスワードでphpmyadminにログインします。

4

公式の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
3
Biró Dani

@kgrが述べたように、MySQL 8.0.11は認証方法にいくつかの変更を加えました。

これに関するphpMyAdminバグレポートを開きました: https://github.com/phpmyadmin/phpmyadmin/issues/1422

MySQL 8.0.4-rcは私にとってはうまく機能していたので、MySQLがパッチレベルリリースでこのような変更を行うのはおかしいと思います。

3
Isaac Bennetch
 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';

コマンドラインからログインすると、その後動作します。

2
Vipan K Verma

多くの人が他の回答で指摘したように、 MySQLのデフォルト認証プラグインをネイティブに変更する はトリックを行います。

それでも、新しいcaching_sha2_passwordプラグインを使用できないため、トピックを閉じるために互換性が開発されるまで待ちます。

1
Lucas Noetzold

次を実行して、MySQL 8.0.12でこれを解決しました。

mysql_upgrade -u root
1
Pelmered

私の場合、それを修正するには、PhpMyAdminで使用する新しいユーザーを作成することをお勧めします。これは、rootユーザーを変更すると、MySQL WorkBenchなどの他のアプリケーションでネイティブログインの問題が発生するためです。

これは私がやったことです:

  • Rootユーザーmysql -u root -pを使用してMySQLコンソールにログインし、パスワードを入力します。
  • 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を実行してインストールを再構成することにより、認証を変更できます。デフォルトの認証をレガシーに変更するように求められます。その後、認証をレガシーに変更するためにそのオプションを続行できます。

0
Mohammed Altaf

ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'PASSWORD';を使用しました

0
Joseph Daudi