.NET で SSH.NET 経由でリモート MySQL データベースに接続するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-27 12:27:02
オリジナル
477 人が閲覧しました

How to Connect to a Remote MySQL Database via SSH.NET in .NET?

SSH.NET 経由で .NET から MySQL に接続

問題:

ユーザーが遭遇する問題これは、MySQL Connector/NET と SSH.NET ライブラリの組み合わせを使用して、SSH 経由でリモート サーバー上にある MySQL データベースからデータを取得しようとする場合に発生します。 SSH 接続を確立しているにもかかわらず、コードはデータベース クエリの結果を生成できません。

解決策:

この問題に対処するには、転送ポートを構成することが重要です。正しく。以下のコードは、洗練されたアプローチを提供します。

<code class="csharp">using(var client = new SshClient("ssh server id", "sshuser", "sshpassword")) // establish SSH connection to server hosting MySQL
{
    client.Connect();
    if (client.IsConnected)
    {
        var portForwarded = new ForwardedPortLocal("127.0.0.1", 3306, "127.0.0.1", 3306);
        client.AddForwardedPort(portForwarded);
        portForwarded.Start();
        using (MySqlConnection con = new MySqlConnection("SERVER=127.0.0.1;PORT=3306;UID=someuser;PASSWORD=somepass;DATABASE=Dbname"))
        {
            using (MySqlCommand com = new MySqlCommand("SELECT * FROM cities", con))
            {
                com.CommandType = CommandType.CommandText;
                DataSet ds = new DataSet();
                MySqlDataAdapter da = new MySqlDataAdapter(com);
                da.Fill(ds);
                foreach (DataRow drow in ds.Tables[0].Rows)
                {
                    Console.WriteLine("From MySql: " + drow[1].ToString());
                }
            }
        }
        client.Disconnect();
    }
    else
    {
        Console.WriteLine("Client cannot be reached...");
    }
}</code>
ログイン後にコピー

この更新されたコードでは:

  • SSH 接続の確立は変更されません。
  • 転送されたポートは次のように構成されます。ローカル ポート 3306 をローカルホスト上のリモート ポート 3306 に転送します。これにより、データベース クエリが SSH トンネル経由でルーティングされるようになります。
  • その後、MySqlConnection がローカル ポート 3306 に確立され、アプリケーションがリモート MySQL データベースに接続できるようになります。
  • データベース クエリの実行

この改訂されたコードは、データベースに効果的に接続し、データを取得して表示し、リモート MySQL データベースにアクセスするための信頼できるメカニズムを提供します。 .NET アプリケーションでの SSH。

以上が.NET で SSH.NET 経由でリモート MySQL データベースに接続するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート