3

私は小さなチャットプログラムを作っています。c# を使用して mysql データベースからデータを取得したいと考えています。しかし、私はエラーが発生し続けます。

An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll

Additional information: Unable to connect to any of the specified MySQL hosts.

私はこれを試しました:

string MyConString = "SERVER=localhost;" +
                     "DATABASE=databse;" +
                     "UID=root;" +
                     "PASSWORD=passowrd";
MySqlConnection connection = new MySqlConnection(MyConString);

そして、それはうまくいきました。しかし、ローカルホスト上のもの以外のmysqlデータベースに接続しようとすると、エラーが発生し、何を試すことができるかを考えます

ありがとう

4

2 に答える 2

0

サーバーへのリモート接続が許可されていることを確認する必要があります。ここでは、その詳細について説明します。

次に、接続文字列で使用しているユーザーが localhost の外部からアクセスできることを確認する必要があります。この回答からの引用:

接続しようとしているユーザーは、ホストからの接続を許可されていますか? 詳細については、 http ://dev.mysql.com/doc/refman/5.1/en/create-user.htmlおよび http://dev.mysql.com/doc/refman/5.1/の MySQL ドキュメントを参照してください。 en/account-names.html。具体的には、アカウント名の構文は 'user_name'@'host_name' です。任意のコンピューターから特定のアカウントに接続できるようにする場合、アカウント名は 'user_name'@'%' のような構文に従います。% は任意のホスト名に一致するワイルドカードです。

上記のいずれも機能しない場合は、データベースへのアクセスをブロックしているファイアウォール ルールがないかどうかを最後に確認する必要があります。ここに詳細がありますが、最初に試みることは、データベース サーバーの 3306 ポートに telnet することです (つまり、データベースが既定のポートを使用している場合)。

PS : root ユーザー アカウントを使用してデータベースに接続していることに気付きました。デフォルトでは、root は localhost ( source )からのみログインできます。

Windows では、ローカル ホストからの接続のみを許可する root アカウントが作成されます。ホスト名 localhost または IP アドレス 127.0.0.1 を指定して接続できます。ユーザーがインストール中に [リモート マシンからのルート アクセスを有効にする] オプションを選択すると、Windows インストーラーは、任意のホストからの接続を許可する別のルート アカウントを作成します。

Unix では、各ルート アカウントがローカル ホストからの接続を許可します。接続は、ホスト名 localhost、IP アドレス 127.0.0.1、または実際のホスト名または IP アドレスを指定して行うことができます。

そのため、おそらくユーザー レベルのアクセス権から調査を開始する必要があります。root が localhost に制限されている場合は、(セキュリティ上の理由から) そのままにして、アプリケーションからリモートでデータベースにアクセスするための新しいユーザーを作成することをお勧めします (詳細はこちら)。

于 2013-07-18T12:29:26.843 に答える