MySQLのパスワードハッシュ
あなたがMySQLのインストールをアップグレードするたびに、それを使用するすべてのクライアントをアップグレードすることを確認してください。
いくつかのケースでは、4.1より前のバージョンを使用するクライアントは、後者が後4.1バージョンを持っている場合、MySQLデータベースに対して認証中に問題を持つことになります。
トリックは、4.1(つまり、4.11と設定)の後、MySQLはそれはmysqlシステムデータベース内のユーザーテーブルにパスワードを格納する方法を変更したことです。
パスワードハッシュは長い代わりに、古い16バイトの41バイトです。
したがって、たとえば、あなたのMySQLサーバが5.0の場合は、お使いのphp - mysqlのライブラリは4.1のときに、Webアプリケーションはデータベースへの接続に失敗します。 このように、それは、クライアントをアップグレードすることをお勧めします。
いずれの場合でも、MySQLは、古い形式にハッシュバックを変更する方法を提供しています。 議論のために、問題のユーザーはジョンであると仮定し、パスワードのダミーを使用して接続できるようにしたい。 この場合には、プロンプトからMySQLサーバに接続(SSHと使用"には、mysql - u root - pをmysqlの"Linux上で、またはMySQL / binのwindowsディレクトリに移動し、同じクエリを実行)、次のクエリを発行します。
更新ユーザー設定したパスワード= OLD_PASSWORD('ダミー')ここで、ユーザー='ジョン';
権限をフラッシュする。
OLD_PASSWORD()関数は、古い16バイトのハッシュ値が生成されます。 最初のクエリでは、最終的にはこのハッシュを使用するユーザーのパスワードを更新します。 番目のクエリは、新しいユーザーの権限を再読み込みするためのMySQLサービスのために必要です。
PS:rootのパスワードが機能していない場合、同様に参照するためにそれをリセットしてのガイド 。
また、データベースが多くのユーザーを持っており、それらを追跡していない場合には、次のクエリを使用することができますし、それは新しいハッシュを使用しているユーザ名を返します。
!LENGTH(パスワード)= 41、ユーザーから(ユーザー)の異なる選択します。
