2013-05-10 3 views
14

WindowsのOBDCドライバを使用してMySQLデータベースに接続しようとすると問題が発生します。明白なことに関する多くの検索ヒットがあります...人々は古いバージョンを使用していますが、私はそうではありません。古い(4.1.1以前の)認証プロトコルを使用した接続が拒否されました(クライアントオプション 'secure_auth'が有効)

mysqldは

enter image description here

だから私は、任意の事前4.1.1プロトコルがどこから来ている理解するために途方に暮れてよ のCentOS 6.4 32bit版

./usr/libexec/mysqld Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution) 
です。何か案は?

答えて

10

正しい質問をすれば答えが見つかるはずです。

この場合、「マイ」問題は、パスワードがハッシュされてデータベースに格納される方法に関係します。従来のパスワードは、より短いハッシュで保存されましたが、現在は推奨されていません。 http://bugs.mysql.com/bug.php?id=65461を:

いくつかの重要なポイント:参照、

mysql_upgradeコマンドは、パスワードをアップグレードしていないではないとすることができ、またそれはいくつかのバージョンではそれについて警告しません。

ほとんどの場合、最新のサーバーとクライアントがあります。レガシークライアントをどこかに作成するだけで、クライアントが使用しようとしているアカウントに問題が発生します。

さまざまなバージョンで状況が異なるため、データベース内のいくつかの従来のパスワードを使用していて、突然何らかの理由でアカウントが機能しなくなりました...これは、状況。

パスワードをアップグレードすることはできません。あなたは彼らが何であるかを知る必要があります。

EDIT:より長いハッシュを使用する新しいクライアントを使用して短いハッシュで保存されたパスワードを変更する必要があります。そうすることで、より長いハッシュのアカウントパスワードを書くことになります。その時点で、アカウントにアクセスしようとする試みは何も表示されなくなります。問題が再発する場合は、サイトで古いクライアントを探していて、推奨されていないハッシュ長のパスワードをまだ書き込んでいる必要があります。

+0

私は、MySQL以内にパスワードをリセットするに精通していないし、次のURLで良いサンプルが見つかりました: ます。http:// www.cyberciti.biz/faq/mysql-change-user-password/ – Jeff

+0

コマンドライン[phpMyAdmin](http://www.phpmyadmin.net/home_page/index.php)に慣れていない場合は、なしで生きたいとは思わないでしょう。 – tlum

+0

これは以下のSTWの答えと組み合わせて私を正しく設定しました。 – Jason

3

古いバージョンのドライバ3.51.30をインストールしてください:http://dev.mysql.com/downloads/connector/odbc/5.1.html#downloads それは私のMySQLのVER 5.0.24a-コミュニティに取り組んでいます

+1

これは実際に問題に対処するものではなく、古いクライアントバージョンで作成された一部のユーザーアカウントで、廃止されたパスワードハッシュ長の問題があります。解決策としてクライアントをダウングレードするのは不誠実です。そのようなアカウントは、より安全なパスワードハッシュを使用するように更新する必要があります。 – tlum

+0

これが動作することが確認できます。 –

0

を誰もがこれを当たる場合には、私は別の解決策を見つけた - 非常に奇妙な -

  1. インストール5.1 64ビットODBCドライバ - それ自身でODBC接続を確認し、接続できる場合は#2を実行してください。
  2. リンクサーバー - プロバイダーをクリック - MSDASQLを右クリックし、プロパティをクリックします。
    • 「プロセスを許可する」チェックボックスをオフにします。これは、TEXTフィールドとNTEXTフィールドを挿入する必要がない場合には有効です。
  3. は、あなたのリンクサーバー接続を作成するか、で戦ってきたものをテストする -

笑私は「インプロセスを許可する」持っていた私はまだODBCシステムDSNがうまく働いていてもエラーが発生しましたチェックボックスをオンにします。私は5.1のドライバがそのエラーを出さないため、SQLがプロセスを共有していたサーバーのために5.1(正常に動作するサーバーで)と5.1を混在させていたので、私は推測しています。

+0

私はすでに以下のことを述べていると思います。 「さまざまなバージョンで状況が異なるように処理されています...」これは解決策ではなく、カーペットの下で問題を掃くだけです。ハッシュサイズは非推奨です。新しいクライアントはそれをサポートしていません。この問題を解決するには、サポートされている長さで廃止された長さのパスワードを書き換える必要があります。それ以外のものは回避策に過ぎず、あなたに戻ってあなたや他の誰かを何度もかむことがあります。または、これまでに説明した問題とはまったく関係のないこのエラーを生成する新しい方法を見つけることができました。 – tlum

1

私のMySQLデータベースにリモートでアクセスしようとすると、同様のエラーメッセージが表示されました。 Directadminの使用上記のようにMySqlデータベースのパスワードを簡単に変更しました。これにより、より新しいハッシュ方式を使用してパスワードが自動的に生成されました。これにより、リモート接続の問題が即座に解決されました。

9

Manage Server Connections、Connectionタブ、AdvancedサブタブのMySQL Workbench 6.08では、「」というチェックボックスをオンにする必要があります。古い認証プロトコルを使用してください。

+1

これはMySQL Workbenchに最適です - ODBCコネクタの全体的なバマー – STW

+1

質問はMySQL Workbenchにはまったく関係ありません。 – PhilS

3

これは、Windows用のODBCコネクタを使用してPercona 5.5サーバーに接続している間に実行されました。 secure_authが無効になっています。

MySql Workbenchと違って、私はODBCコネクタを見つけたので、古い16バイトのハッシュされたパスワードを使用するログインを認証するオプションをサポートしていません。これに関するバグ報告がありますが、譲受人が機能要求について混乱していると思われます(bug #71234を参照)。

私は、これらのコマンドを使用して、新しい41バイトのハッシュを使用するようにmysqlのログインを更新することができた:私は、私たちのサーバーを述べたように

set old_passwords=0; 
set password=password('yourpasswordhere'); 

はありsecure_authold_password()結果を返すようにpassword()を引き起こすと思われる、無効。 set old_passwords=0;を実行すると、password()メソッドは新しい(セッションの間)41バイトのハッシュを生成できます。

+0

ありがとう、これは私のパスワードを適切にリセットするために必要なものです – Jason