独自にポートフォワード作成し、ラズパイの MySQL へ LINQ で接続する

さて、MySQL Workbench から SSH ポートフォワーディングでラズパイの MySQL へ接続できることが分かったが、じゃあ独自の C# プログラムから接続する場合はどうするのか?という問題がある。

この場合、workbench が立ててくれていた ssh を自前で建てることになる。いくつか方法があるのだけど(Putty や Tera Term で建てることもできる)、今だと Ubuntu on Windows を使って ssh を立ててしまったほうが早いみたい。

image

左にある緑色の SSH を自前で建てることになる。

ssh -L 19000:localhost:3306 pi@raspi3.local

ちょっと順番がややこしいのだけど、MySQL Workbench の設定に合わせると、

  • SSH Hostname: raspi3.local
  • SSH Username: pi
  • MySQL Hostname: localhost

となる、自前で建てる SSH のポート番号は 19000 番になるので、localhost:19000 に接続すると、raspi3.local:3306 へ接続したのと同じことになる。

image

この 19000番に使って MySQL workbench から接続することもできる。当然、Ubuntu on Windows の画面を閉じると SSH が止まるので、このウィンドウは立ち上げっぱなしにする。

image

ポートフォワードを使って MySQL へ接続する

LINQを使ってMySQLにアクセスする | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/9093

.NET Core上でLINQを使ってMySQLにアクセスする | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/9102

ローカルな MySQL に接続する場合のプログラムで接続文字列を変えればよい。

public partial class RedmineEntities : DbContext
 {
     public RedmineEntities()
     {
              
     }
     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
     {
         base.OnConfiguring(optionsBuilder);
         optionsBuilder.UseMySQL(@"server=localhost;user id=redmine;password=redmine;database=redmine;port=19000;sslmode=None");
     }
  
     public DbSet<projects> projects { get; set; }
     public DbSet<issues> issues { get; set; }
}

ポート番号をフォワードしている 19000 に変える。

.NET Core 版だとこんな感じに実行ができる。

image

WPF 版の場合は、app.config に接続文字列が書いてあるだろうから、そこを直接書き替える。EF のデザイナも使えるので便利だろう。

<connectionStrings>
   <add name="RedmineEntities" connectionString="server=localhost;user id=redmine;password=redmine;database=redmine;port=19000;sslmode=None" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
カテゴリー: 開発, C#, MySQL パーマリンク