「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP 5.3.0 を使用してリモート MySQL データベースに接続すると、「OK パケットが予想より 6 バイト短い」エラーが発生するのはなぜですか?

PHP 5.3.0 を使用してリモート MySQL データベースに接続すると、「OK パケットが予想より 6 バイト短い」エラーが発生するのはなぜですか?

2024 年 11 月 9 日に公開
ブラウズ:808

Why am I getting the \

MySQL PHP の非互換性: 接続エラーと解決策について

接続時に「OK パケットが予想より 6 バイト短い」エラーが発生するPHP バージョン 5.3.0 を使用するリモート MySQL データベースでは、不可解な問題が発生する可能性があります。この問題を解決するには、根本的な原因を理解し、適切な解決策を適用することが重要です。

このエラーは、ローカル PHP バージョンとリモート MySQL サーバー間の非互換性を示しています。 PHP バージョン 5.3.0 以降では、MySQL アカウントのパスワードが新しい MySQL 認証プラグインを使用してハッシュされている必要があります。ただし、5.0.22 などの古い MySQL バージョンでは、16 文字のパスワードを使用した古い認証方法が依然として使用されている可能性があります。 PHP 5.3.0 が MySQL サーバーからの応答を正しく解釈できないため、この矛盾によりエラーが発生します。

この問題に対処するには、2 つの解決策が考えられます:

  • ]新しいパスワードを設定します: エラーが発生しているアカウントについては、MySQL クライアントを使用してコマンド「SET PASSWORD FOR 'username'@'hostmask'」を実行します。 = PASSWORD('thepassword')" と入力して、新しいハッシュ化されたパスワードを生成します。これにより、アカウントのパスワードが新しい認証形式に更新されます。
  • MySQL サーバーの構成: あるいは、MySQL サーバーがデフォルトで古い認証方式を使用するように構成されているかどうかを確認することもできます。その場合は、サーバー設定を変更して新しい認証プラグインを適用し、古いパスワードを禁止できます。

アカウントが古い 16 文字のパスワードを使用しているかどうかを確認するには、次のクエリを実行します。

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='username'

問題のある 5.0.22 サーバーで、'username' を問題のアカウントに置き換えます。結果がパスワードの長さ 16 で、最初の文字が 16 進数 (0 ~ 9 または A ~ F) である場合は、古いパスワードであることを示しています。

根本的な原因を理解し、適切な解決策を適用することで、次のことが可能になります。 MySQL PHP の非互換性を解決し、リモート データベースへの接続を正常に確立します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3