web-dev-qa-db-ja.com

PHP 7.2.2 + mysql 8.0 PDOが提供するもの:クライアントに認識されない認証方法[caching_sha2_password]

私はphp 7.2.2とmysql 8.0を使用しています。

適切な資格情報で接続しようとすると、次のエラーが表示されます。

PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")

問題のトラブルシューティングに助けが必要です。

18
zioMitch

MySql installation picture :mysql> = 8を使用したいが、caching_sha2_passwordを気にしない場合は、インストール時に2番目のオプションを選択するだけです。

5
D0rm1nd0

どこかでこれを見つけました。どこにあるか(または私が信用するだろうか)覚えていませんが、MySQL 8が良くなるまではうまくいきます。そして、PHPはMySQLのcache_sha2_passwordの準備ができています。

MySQL Shell(コマンドプロンプトなど)の場合:

CREATE USER username@localhost identified with mysql_native_password by 'password';

sernameはユーザー名で、passwordはそのユーザーのパスワードです。

その後、シェルにアクセス権を追加できます。または、ユーザーが認証タイプ:Standardであるため、ワークベンチにアクセス権を追加できます。

22
Reid
alter user 'username'@'localhost' identified with mysql_native_password by 'password';

ここでailionxが示唆するとおり: https://github.com/laradock/laradock/issues/139

16
Szekelygobe

(新しい認証方法で)mySQL 8を使用するには、PHPをアップグレードするだけで済みます。

MySQL 8

7.1.16より前のPHPバージョン、または7.2.4より前のPHP 7.2を実行する場合、MySQL 8サーバーのデフォルトのパスワードプラグインをmysql_native_passwordに設定します。 Caching_sha2_passwordが使用されていない場合でも、クライアント[caching_sha2_password]が認識できない認証方法。

参照: https://www.php.net/manual/en/ref.pdo-mysql.php

2
Leonardo Beal