PHP 5.4.1(ソースからコンパイル)を実行しようとしていますが、mysqlで接続しようとすると、次のようになります。
Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in
PHP 5.3 / 5.2を使用すると、正常に動作します。この問題の原因は何ですか?
PHP 5.4.1(ソースからコンパイル)を実行しようとしていますが、mysqlで接続しようとすると、次のようになります。
Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in
PHP 5.3 / 5.2を使用すると、正常に動作します。この問題の原因は何ですか?
回答:
これを読んでみてください:リンク
MySQLはバージョン4.1でより長いパスワードハッシュを導入しました(おそらく私は)、サーバーはおそらくそれらをまだ使用しています(mysqlユーザーテーブルで16バイトのパスワードハッシュを確認してください)。新しいバージョンでは、より長いパスワードハッシュが使用されます。サーバーは両方をサポートしますが、クライアント(php)はこのバージョン(以降)で新しいもののみをサポートするようです。
可能であれば、最初の行のリンクからソリューションを使用し、新しいハッシュでパスワードを再設定してください。ただし、古いパスワードに依存する他の(古い)クライアントを使用している場合は、互換性が失われる可能性があります。また、PHPでMySQLの古いパスワードのサポートを探してみてください。しかし、それについてはよくわかりません。
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';
私はこれが古いトピックであることを知っていますが、何もアップグレード/ダウングレードする必要なく、問題を回避しました。基本的に、my.cnfファイルのold_passwords = 1行をコメントアウトし、mysqlを再起動し、最終的に16バイトのハッシュを取得したユーザーを追加/変更し、次に戻ってold_passwords = 1行のコメントを外してmysqlを再起動しました。だから基本的に:
つまり、1つのユーザーが新しいパスワードタイプを使用し、他のユーザーは古いパスワードタイプを使用しています。そして、誰でもログインできます!;)
これは、MYSQLサーバーが古いパスワードハッシュを使用している場合に何度も発生し、パスワードを変更するか、サーバーをアップグレードして、認証の問題を修正する最新のパスワードハッシュを取得します。