mysql_connect():サーバーは、クライアント[mysql_old_password]に不明な認証方法を要求しました


8

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を使用すると、正常に動作します。この問題の原因は何ですか?


この回答を別の質問で参照してください:stackoverflow.com/a/50776838/1041047
Robin Qiu

回答:


10

これを読んでみてください:リンク

MySQLはバージョン4.1でより長いパスワードハッシュを導入しました(おそらく私は)、サーバーはおそらくそれらをまだ使用しています(mysqlユーザーテーブルで16バイトのパスワードハッシュを確認してください)。新しいバージョンでは、より長いパスワードハッシュが使用されます。サーバーは両方をサポートしますが、クライアント(php)はこのバージョン(以降)で新しいもののみをサポートするようです。

可能であれば、最初の行のリンクからソリューションを使用し、新しいハッシュでパスワードを再設定してください。ただし、古いパスワードに依存する他の(古い)クライアントを使用している場合は、互換性が失われる可能性があります。また、PHPでMySQLの古いパスワードのサポートを探してみてください。しかし、それについてはよくわかりません。



3

私はこれが古いトピックであることを知っていますが、何もアップグレード/ダウングレードする必要なく、問題を回避しました。基本的に、my.cnfファイルのold_passwords = 1行をコメントアウトし、mysqlを再起動し、最終的に16バイトのハッシュを取得したユーザーを追加/変更し、次に戻ってold_passwords = 1行のコメントを外してmysqlを再起動しました。だから基本的に:

  • コメントold_passwords = 1
  • mysqlを再起動します
  • ユーザーの追加/変更
  • un_comment old_passwords = 1
  • mysqlを再起動します

つまり、1つのユーザーが新しいパスワードタイプを使用し、他のユーザーは古いパスワードタイプを使用しています。そして、誰でもログインできます!;)


1

これは、MYSQLサーバーが古いパスワードハッシュを使用している場合に何度も発生し、パスワードを変更するか、サーバーをアップグレードして、認証の問題を修正する最新のパスワードハッシュを取得します。


1
MySqlが新しいハッシュを使用すると想定して、dbユーザーのパスワードをもう一度変更しました。動いた。他の変更は必要ありませんでした。
eyal_katz

0

mediawikiインストールをアップグレードしようとすると、同様のメッセージが表示されました。私はホスティングプロバイダーとしてNetfirmsを使用しています。これを解決するには、コントロールパネルにログインし、MySQL領域に移動し、mediawikiが使用していたデータベースを変更します。その後、mediawikiのアップグレードに進むことができました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.