エラー: mysqlnd レガシー認証を使用して MySQL 4.1 に接続できません
PHP 5.3 および MySQL 5.5 スキーマを使用すると、開発者は次のような問題が発生する可能性があります。 error:
Database connection failed: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.
このエラー メッセージは、MySQL 4.1 以前のバージョンで採用されている古い認証メカニズムが原因で、MySQL ネイティブ ドライバーである mysqlnd が安全な接続を確立できないことを示します。
問題の解決
この接続の問題を解決するには、次の手順に従います。
「old_passwords」設定を削除するかコメントアウトします。 .cnf:
my.cnf 構成ファイルを変更し、「old_passwords = 1」を含む行を見つけます。この行を削除するか、先頭に「#」文字を追加してコメントアウトします。
MySQL を再起動します:
MySQL サービスを再起動して、 my.cnf に加えられた変更を適用します。この手順により、MySQL で新しいパスワード形式が使用されるようになります。スキップした場合、MySQL は引き続き安全でない形式を使用します。
ユーザー パスワードの更新:
データベースに接続し、次のクエリを実行して識別します。古いパスワードを持つユーザー:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
このクエリは、古い (16 文字) と新しい (41 文字) の両方のパスワード ハッシュを持つユーザーを表示します。
パスワード更新の実行:
16 文字のパスワード ハッシュを持つユーザーの場合は、次のコマンドを使用してパスワードを更新します:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
「username」を実際のユーザー名と「password」に置き換えます。 ' を希望の新しいパスワードに置き換えます。
フラッシュ権限:
最後に、次のコマンドを実行して更新されたパスワードを適用します:
FLUSH PRIVILEGES;
これらの手順を完了すると、レガシー認証によって引き起こされる接続の問題を解決し、mysqlnd を使用して MySQL への安全な接続を確立できます。
以上が「mysqlnd がレガシー認証を使用して MySQL 4.1 に接続できません」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。