Windows OBDCドライバーを使用してMySQLデータベースに接続しようとすると問題が発生します。明らかなことに関して多くの検索ヒットがあります...人々は古いバージョンを使用していますが、私はそうではありません。
mysqldはCentOS 6.4 32ビット上にあります
./usr/libexec/mysqld Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution)
そのため、4.1.1以前のプロトコルがどこから来ているのかを理解するのに途方に暮れています。何か案は?
正しい質問をすると、答えを見つけやすくなると思います。
この場合、「私の」問題は、パスワードがハッシュされてデータベースに保存される方法に関連しています。従来のパスワードは、廃止された短いハッシュで保存されていました。
いくつかの重要なポイント:
mysql_upgradeはパスワードをアップグレードできません。また、一部のバージョンではパスワードについて警告もしません。 http://bugs.mysql.com/bug.php?id=65461 を参照してください。
ほとんどが最新のサーバーとクライアントを持っている場合でも、レガシーパスワードを作成するためにどこかでレガシークライアントを1つ使用するだけで、どのクライアントがそれを使用しようとしてもそのアカウントで問題が発生します。
異なるバージョンが状況を異なる方法で処理しているため、データベース内の一部のレガシーパスワードに座って、突然、明らかな理由もなく、一部のアカウントが機能しなくなります。これは、異なるバージョンが状況を処理する方法を選択したためです。
パスワードをアップグレードすることはできません。あなたはそれらが何であるかを知り、あなたはそれらを変えなければなりません。
編集:より明確にするために、より長いハッシュを使用する新しいクライアントを使用して、より短いハッシュで保存されているパスワードを変更する必要があります。そうすることで、アカウントのパスワードをより長いハッシュで記述します。その時点で、アカウントへのアクセス試行にフラグを立てるべきではありません。問題が再発する場合は、非推奨のハッシュ長でパスワードをまだ書いているサイトの古いクライアントを探す必要があります。
[サーバー接続の管理]、[接続]タブ、[詳細]サブタブのMySQL Workbench 6.08では、「古い認証プロトコルを使用」ボックスをオンにする必要があります。
ODBC Connector for Windowsを使用してPercona 5.5サーバーに接続しているときに_secure_auth
_が無効になっています。
ODBCコネクタは、MySql Workbenchとは異なり、古い16バイトのハッシュされたパスワードを使用するログインを認証するオプションをサポートしていません。割り当て先は、機能のリクエストについて混乱している/混乱していた( bug#71234 を参照)。
次のコマンドを使用して、mysqlログインを更新して新しい41バイトのハッシュを使用することができました。
_ set old_passwords=0;
set password=password('yourpasswordhere');
_
前述したように、サーバーでは_secure_auth
_が無効になっているため、password()
がold_password()
の結果を返すようです。 _set old_passwords=0;
_を実行すると、password()
メソッドが(セッション中に)新しい41バイトのハッシュを生成できるようになります。
古いバージョンのドライバー3.51.30をインストールしてみてください: http://dev.mysql.com/downloads/connector/odbc/5.1.html#downloads 動作しますMysql Ver 5.0.24a-communityで
MySQLデータベースにリモートでアクセスしようとすると、同様のエラーメッセージが表示されました。 Directadminを使用して、上記のようにMySqlデータベースのパスワードを簡単に変更しました。これにより、新しいハッシュ方式を使用してパスワードが自動的に生成されました。これにより、リモート接続の問題が即座に解決されました。
誰かがこれをヒットした場合の別の解決策を見つけました-非常に奇妙です-
「Allow inprocess」にチェックマークを付けても、ODBCシステムDSNは正常に機能しましたが、5.2(正常に機能するサーバーと)が混在していたため、 5.1を使用していないサーバーでは、5.1ドライバーがそのエラーを出さないため、SQLはプロセスを共有していました。
サーバーを変更できない場合は、おそらくクライアントを変更できます。 http://bugs.mysql.com/bug.php?id=75425