- my.cnfのold_passwords=1を削除またはコメントします
MySQLを再起動します。そうしないと、MySQLは古いパスワード形式を使用し続けます。つまり、組み込みのPASSWORD()ハッシュ関数を使用してパスワードをアップグレードすることはできません。
古いパスワードハッシュは16文字、新しいパスワードハッシュは41文字です。
-
データベースに接続し、次のクエリを実行します:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
これにより、どのパスワードが古い形式であるかがわかります。例:
+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+
ここで、各ユーザーは複数の行を持つことができることに注意してください(異なるホスト仕様ごとに1つ)。
各ユーザーのパスワードを更新するには、次のコマンドを実行します。
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
最後に、特権をフラッシュします:
FLUSH PRIVILEGES;
出典:PHP5.3で「mysqlndが古い認証を使用してMySQL4.1以降に接続できない」を修正する方法