2

MySQL データベースに接続すると、次のエラーが発生します。

Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)

libmysql.dll の異なるバージョンを使用すると、問題が発生するようです。

MySQL Community Server (5.6.0) をインストールして入手した以前のバージョンを使用して接続できました。しかし、MySQL C/connector ソース コードを使用して libmysql.lib と .dll を自分でビルドすると、上記のエラーで接続が失敗します。このことから、DLL ファイルをビルドするときにソース コード内に、適切に接続するために観察しなければならない設定があるのではないかと考えてしまいます。それは何でしょうか?

4

1 に答える 1

2

これはコネクタの問題ではなく、データベースの問題です。このブログ記事で取り上げています。OLD_PASSWORD基本的にパスワードのハッシュ化は 4.1 以降で変更されましたが、それにアクセスする関数は古い方法が維持されていました。ただし、バージョン 5.6 では、依然としてその認証方法に基づいて接続を単純に拒否することにしました。

したがって、2つの解決策があります:

  1. 最初のステップとして、server --skip-secure-auth起動パラメーターを使用して、mysql のドキュメントで示唆されている簡単で汚い回避策に従います。これは、サーバーのアップグレード後にデータベース接続を再び機能させるための短期的な解決策です。
  2. 古い暗号化方法を使用するすべてのアカウント パスワードを新しいものに更新して、データベース コンテンツをアップグレードします。これは、新しい暗号化を効果的に使用し、上記のスイッチが依然として可能にする安全でない状況を回避するため、推奨される方法です。データベースが最新の状態になったら、最初のソリューションからスイッチを削除することを忘れないでください。
于 2013-05-16T07:48:59.120 に答える