21

Hostgator を使用して Web サイトを持っていて、C# Windows アプリケーションで mysql データベースにアクセスしたいのですが、接続しようとすると次のメッセージが表示されました。

「古いパスワードによる認証はサポートされなくなりました。4.1 スタイルのパスワードを使用してください」

私は与えられた解決策を試しました:

SET SESSION old_passwords=0;
SET PASSWORD FOR user@host=PASSWORD('your pw here');

最初のクエリは正常に実行されましたが、2 番目のクエリが実行されたときに「user@host のアクセスが拒否されました」というエラーが表示されました。なぜこの問題があるのか​​ 理解できません。MySQL-connecter-net 6.6.5 を使用しています。

データベースをMySql workbench 5.2.47に正常に接続しました。

もっとできることを誰か助けてくれませんか?


ホスティング サイトに連絡したところ、4.1 スタイルのパスワードを使用するように my.cnf ファイルが変更されました。そして、私はmysqlに接続できます

mysql -u <username> -p <password> -h <hostname>;

しかし、mySQL コネクタ net 6.6.5 を使用して C# に接続しようとすると、このエラーが再び発生しました。

Windows 8 64 ビットで、Visual Studio 2012 と MySQL コネクタ 6.6.5 を使用しています。これは私が接続に使用したコードです

using MySQL.Data.MySQLClient;

private void button1_Click(object sender, EventArgs e)
            {
                string connStr = String.Format("server={0};port={1};uid={2};password={3};database={4}",
                    txtserver.Text, txtPort.Text, txtUser.Text, txtPassword.Text, txtDatabase.Text);
                conn = new MySqlConnection(connStr);
                try
                {
                    conn.Open();
                    MessageBox.Show("Test Connection Succeded");
                }
                catch (MySqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

問題がどこにあるのか理解できません。私を助けてください

4

9 に答える 9

4

今日、C# アプリケーションで同様の問題が発生しました。hostgator.com (mysql) でサーバーに接続して、localhost に接続してみました。多くの投稿を読み、多くの変更を加えた後、すべての手順に従いましたが、ホストゲーターの mysql に接続できませんでした。

私の場合の解決策は、MySql Connector/NET ライブラリをバージョン 6.* からバージョン 5.* に変更することでした。変更後、アプリケーションは正常に接続されました。

これはすべての人にとって実行可能な解決策ではないかもしれませんが、一部の人にとってはうまくいくかもしれません.

于 2013-09-10T17:59:31.487 に答える
3

C# 用の MySqlClient パッケージを使用して同じ問題が発生しました。それを分解しましょう:

データベースが古いスタイルのパスワードを使用しないようにする必要があるため、実行します

SET old_passwords=0;

注意「SESSION」キーワードはありません。これは、最初のクエリのみが機能することを許可したものです。「SESSION」は一時的なことを意味し、セッションが終了するとセッション設定は失われます。

次に、user@host のパスワードを新しいパスワード スタイルに設定する必要があります。

user@host = PASSWORD('password'); のパスワードを設定します。

この2つはMySqlClientを許可する必要があります

于 2014-07-22T21:43:15.093 に答える
1

@diangelisj の回答に追加して、問題の根本原因はサーバーにインストールされている PhpMyAdmin のバージョンだと言いたいだけです。最新の MySQL Data Connector クラスを使用するには、最新の PhpMyAdmin が必要です (または問題が発生します)。私の場合、PhpMyAdmin 4.0.10.7 があり、MySQL Data Connector 6.7.9 を使用しようとしたところ、エラーが発生しました。

私がしたこと:

  1. https://dev.mysql.com/downloads/connector/net/6.9.htmlからバージョン 5.2.7 をダウンロードします。

  2. アプリケーションへの参照として .dll を追加

  3. プレスト!

于 2015-10-27T17:15:40.263 に答える
0

提案されたすべてを試してみましたが、他の回答者のように問題を解決できませんでした。結局、私のDBが立っていたサーバーは、バージョン3.5.5以降、phpMyAdminが更新されておらず、現在バージョン4.1.14のどこでも使用されており、問題であることが判明しました。解決策は、リモート DB での作業を継続するために、ホストの phpMyAdmin または独自の mySQL を以前のバージョンに更新することです。発生したいくつかの疑問を解決するために、この知識が必要になる場合があります。:)

于 2014-05-04T10:32:39.173 に答える
0

今日、私は同じ問題を見つけました。ワークベンチをダウンロードしました。次のように、ワークベンチがデータベースに接続するためのいくつかの設定があります。2. 詳細設定タブを選択し、OLE 認証プロトコルを使用するを選択します。その後、ワークベンチが動作します。そしてtai1001の投稿に従ってください。機能するすべてのステップを見つけたのはこれだけです。

于 2015-08-18T10:07:18.300 に答える