mySQL connection-string über den SSH-tunnel ohne Passwort

Bekommen habe SSH-Zugriff auf einen server mit mySQL. Mein Zugang authentifiziert sich über meinen öffentlichen Schlüssel, mit dem kein weiteres Kennwort erforderlich.

Mit Putty, ich bin in der Lage per SSH auf den server mit meinem privaten Schlüssel, melden Sie sich direkt in die mySQL-Datenbank über das command-line-tools und ausführen von SQL-direkt. Ich bin auf der Suche zu emulieren, dies durch ein C# - Dienst (Weiterleitung von port 3306 über die SSH-Verbindung), leider alle Verbindungszeichenfolgen, die in http://www.connectionstrings.com/mysql/ benötigen Sie ein Kennwort.

Mein rough-and-ready code, so weit, mit MySql.Data und SSH.NET:

  PrivateKeyFile file = new PrivateKeyFile(@" [ path to private key ]");
  using (var client = new SshClient(" [ server ] ", "ubuntu", file))
  {

      var port = new ForwardedPortLocal(3306, "localhost", 3306);
      client.AddForwardedPort (port);
      client.Connect();

      var connection = new MySqlConnection(
           "server=localhost;database=[database];uid=ubuntu;"
      );
      MySqlCommand command = connection.CreateCommand();
      MySqlDataReader Reader;
      command.CommandText = "select * from sample";
      connection.Open();
      Reader = command.ExecuteReader();
      while (Reader.Read())
      {
          string thisrow = "";
          for (int i = 0; i < Reader.FieldCount; i++)
              thisrow += Reader.GetValue(i).ToString() + ",";
          Console.Write(thisrow);
      }
      connection.Close();
      client.Disconnect();
 }

Läuft der code ohne die SshClient Abschnitt, zu reden, um eine Datenbank auf dem lokalen Netzwerk (mit einem bekannten Benutzernamen und Passwort), funktioniert perfekt. Mit der SshClient Abschnitt in, und mit einem Haltepunkt sobald der tunnel eingerichtet wurde, kann ich mit telnet auf localhost:3306 - und bekommen eine Antwort von mySQL.

Jedoch der folgende Fehler wird geworfen auf die connection.Open() Linie:

Authentifizierung, host 'localhost' für den Benutzer 'ubuntu' mit der Methode 'mysql_native_password' ist fehlgeschlagen mit der Meldung: Access denied for user 'ubuntu'@'localhost' (using password: YES)

Also ... was Verbindungszeichenfolge brauche ich? Oder habe ich etwas verpasst subtile anderswo?

InformationsquelleAutor Adrian Wragg | 2013-08-28
Schreibe einen Kommentar