2013-02-26 12 views
6

私は別のコンピュータのMySQLサーバにアクセスするC#アプリケーションを持っています。私はIPを介してそれをやろうとしています。C#を使用してリモートMySQLサーバに接続するには?

server = "192.168.10.221"; 
database = "restaurantdb"; 
uid = "root"; 
password = ""; 
string connectionString; 
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
mycon = new MySqlConnection(connectionString); 

今アイデアがあるが、私はコンピュータの両方が接続されているインターネットまたはWi-Fi接続経由での接続になります。ここに私の接続文字列です。私はC#でコード化されたSQL文字列を通してデータベースにアクセスします。今私はLANネットワーキングを介してそれらを接続することもできますが、私はどのように知りません。

私は、ネットワークを介してサーバにアクセスすることができますどのように私のコード

{"Access denied for user 'root'@'Crave-PC.lan' (using password: NO)"} System.Exception {MySql.Data.MySqlClient.MySqlException} 

に任意のアイデアを、この例外を取得していますか?

+1

パスワードが間違っていないことを確認してください。それは接続しますが、アクセス拒否エラーが発生するため、信用状に問題がある可能性があります。おそらくrootはlocalhostからのログインのみが許可されているかもしれません。リモートからアクセスできるユーザーを作成します。 – AmazingDreams

+0

リモートからアクセスできるホストを作成するにはどうすればよいですか?私はワークベンチがインストールされている –

+0

私はまたここに 'root'という名前のユーザーがあり、パスワードはありません –

答えて

6

問題はMySQLサーバ側で、rootユーザにはリモートから接続する権限がありません。あなたの現在のルートパスワードの

GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY 'rootPass'; 

だけ変更「rootPass」、ルートdoesntのは、パスワードのMySQLを持っている場合は文句を言わないので、あなたが持っているでしょう、あなたが接続してみましょう:ちょうどmysqlコマンドラインで次のように入力しremotelly接続するためにrootユーザーpermisionsを与えること それを定義する。

片面メモ:セキュリティベストプラクティスとして、クライアントアプリケーションからmysqlデータベースにアクセスするには、root以外の別のユーザーを定義する必要があります。それは助け

希望、このスレッドへ

+0

ありがとう!私はあなたにそんなに借りている! –

+0

xamppを使用しています。 phpmyadminを使用している場合、どのようにmysqlコマンドラインにアクセスできますか? – Kokombads

0

ワン加え:2台のコンピュータが同じネットワークに接続されているいくつかのケースでは

は、上記で定義された接続文字列は、まだの設定にもかかわらず、動作しない可能性がありますソースコンピュータと、クライアントコンピュータからのユーザに対する特権の付与とを含む。

このような場合は、(さらに移動して、Mysql設定ファイルの変更などのソースコンピュータでより深刻な操作を行う前に)「IPアドレスの代わりにサーバー名としてコンピュータ名を使用する」ことを検討してください。

すなわち

  • まず前述したように、
  • ではなく、上記提案の接続文字列の 、以下 接続文字列しようと、ユーザーに権限を付与しますので

を接続文字列は次のようになります。

server = "pc-name-whateveritis"; 
database = "restaurantdb"; 
uid = "root"; 
password = ""; 
string connectionString; 
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
mycon = new MySqlConnection(connectionString); 

送信元コンピュータの名前がエラーを返すことが多い多くの場合、送信元コンピュータの名前が機能する場合があります。

幸運を祈る!

0

rootから別のユーザ名に変更してパスワードを設定すると、rootがローカルホストにいるときにrootに完全なアクセス権しかないため、リモートアクセスにはうまく機能します。 IPアドレスを使用するローカルエリアネットワークではエラーが発生するため、コンピュータ名を使用してください。

関連する問題