sql >> Database >  >> RDS >> Mysql

SSH tunnelt een MySQL-verbinding met C#

Je moet de MySQL verbinden met de gebonden poort van de forwarding. D.w.z. naar de 2222.

Of nog semantisch correcter, gebruik portFwld.BoundPort . Gebruik op dezelfde manier portFwld.BoundHost .

DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);

Merk ook op dat het logischer is om naar de MySQL-host te verwijzen als "localhost", in plaats van naar "example.com", omdat de hostnaam aan de serverzijde wordt opgelost. En aan de serverkant maakt u doorgaans geen verbinding met "example.com", maar met een "localhost".

var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), 2222, "localhost", 3306); 

En natuurlijk moet je de SSH-sessie open houden terwijl je de tunnel nodig hebt. U moet dus verbinding maken met de DB binnen de using blok:

using (var client = new SshClient(connectionInfo))
{
    ...
    client.Connect();
    ...
    portFwld.Start();
    ... 
    DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
}



  1. Ongeldige ID in dubbel geneste zoekopdracht met ORDER BY en ROWNUM

  2. Dynamische actie vernieuw alle rapporten op een pagina

  3. Fout:Object van klasse CI_DB_mysql_result kan niet worden geconverteerd naar string

  4. hoe de java UUID terug te krijgen die in DB is opgeslagen als binair