古い認証による MySQL 接続エラー
「mysqlnd は古い認証を使用して MySQL 4.1 に接続できません」というエラー メッセージが表示される場合は、互換性の問題を示しています。古いパスワード スキームを使用する MySQL データベースに接続しようとしています。この問題を解決するには、データベース サーバーが古いパスワード スキーマを使用するように構成されているかどうかを確認することが重要です。
サーバー構成の確認
次の SQL クエリを実行します。
<code class="sql">SHOW VARIABLES LIKE 'old_passwords'</code>
ログイン後にコピー
結果の理解
- 結果が old_passwords,Off の場合、サーバーは新しい認証ルーチンを使用するように構成されています。ユーザー パスワードは古い形式で保存されている可能性がありますが、サーバーは認証に新しいルーチンを使用します。
- 結果が old_passwords,On の場合、サーバーはデフォルトで古い認証ルーチンを使用するように構成されています。この場合、古いパスワード スキームが認証に使用されます。
トラブルシューティングと解決策
問題を解決するには、次の手順に従います。
-
ユーザー パスワード形式の確認: mysql.user テーブル内のユーザーのパスワードの長さを確認します。 16 文字の長さは古いパスワードを示し、41 文字の長さは新しいパスワードを示します。
-
新しいパスワードを設定します (必要な場合): ユーザーのパスワードが古いパスワードである場合形式で、次のコマンドを使用して新しいパスワードを設定します:
<code class="sql">SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');</code>
ログイン後にコピー
-
権限のフラッシュ: 次のコマンドを実行してデータベースの権限を更新します:
<code class="sql">FLUSH Privileges;</code>
ログイン後にコピー
-
パスワードの長さを再確認: mysql.user テーブルでユーザーのパスワードの長さを再度確認します。これは、新しいパスワード形式が使用されていることを示す 41 文字になっているはずです。
-
接続の再作成: これらの手順を完了した後、クライアント (例: mysqlnd) でデータベースに再接続してみてください。 。接続は成功するはずです。
追加リソース
詳細については、次の MySQL ドキュメントを参照してください:
- http: //dev.mysql.com/doc/refman/5.0/en/old-client.html
- http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html
- http://dev.mysql.com/doc/refman/5.0/en/set-password.html
以上が「mysqlnd は古い認証を使用して MySQL 4.1 に接続できません」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。