MySQL Datenbank verbindung über SSH

  • VB.NET
  • .NET 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von VBob.

    MySQL Datenbank verbindung über SSH

    Hallo !

    Ich möchte auf meine Mysql Datenbank Zugreifen, daran bin ich jedoch gescheitert.
    Nach längerer suche habe ich herausgefunden das bei meinem Anbieter der remotezugriff gesperrt ist.

    Nun habe ich auf der suche nach einer Lösung diesen Thread Gefunden: MySQL Connection over SSH

    Zum Testen habe ich den Code Kopiert. (Ich kopiere gern Code und verändere ihn ,bis ich ihn so weit verstanden habe sodass ich damit arbeiten kann. Meine art zu Lernen ;) )
    Er Funktioniert aber noch nicht.

    Der Fehler Tritt in Zeile 40 auf.

    Quellcode

    1. Imports MySql.Data.MySqlClient
    2. Imports Renci
    3. Public Class Form1
    4. Public Shared uconnection As New MySql.Data.MySqlClient.MySqlConnection
    5. Public Shared dat As Common.DataAdapter
    6. Public Shared DB_SSH_SERVER As String
    7. Public Shared DB_SSH_USER As String
    8. Public Shared DB_SSH_PASSWORD As String
    9. Public Shared DB_MYSQL_SERVER As String
    10. Public Shared DB_MYSQL_DATABASE As String
    11. Public Shared DB_MYSQL_USER As String
    12. Public Shared DB_MYSQL_PASSWORD As String
    13. Public Shared BASE_NAME As String
    14. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    15. DB_SSH_SERVER = "*****"
    16. DB_SSH_USER = "*****"
    17. DB_SSH_PASSWORD = "*****"
    18. DB_MYSQL_SERVER ="*****"
    19. DB_MYSQL_DATABASE ="*****"
    20. DB_MYSQL_USER = "*****"
    21. DB_MYSQL_PASSWORD = "*****"
    22. BASE_NAME = "*****"
    23. End Sub
    24. Public Sub openConnection()
    25. Dim connInfo As New Renci.SshNet.PasswordConnectionInfo(DB_SSH_SERVER, DB_SSH_USER, DB_SSH_PASSWORD)
    26. 'Using
    27. Dim sshClient As New Renci.SshNet.SshClient(connInfo)
    28. sshClient.Connect()
    29. If sshClient.IsConnected Then
    30. Dim port As New Renci.SshNet.ForwardedPortLocal(DB_MYSQL_SERVER, 3306, DB_MYSQL_SERVER, 3306)
    31. sshClient.AddForwardedPort(port)
    32. port.Start()
    33. MsgBox("ssh tunnle opened")
    34. Dim strConnStr As String
    35. uconnection = New MySqlConnection
    36. strConnStr = "Server=" & DB_MYSQL_SERVER
    37. strConnStr &= ";Database=" & DB_MYSQL_DATABASE
    38. strConnStr &= ";UserID=" & DB_MYSQL_USER
    39. strConnStr &= ";Password=" & DB_MYSQL_PASSWORD
    40. uconnection.ConnectionString = strConnStr
    41. Try
    42. uconnection.Open()
    43. Catch exOpenConnection As Exception
    44. MsgBox("error open connection" & exOpenConnection.Message, MsgBoxStyle.Information, BASE_NAME)
    45. End Try
    46. End If
    47. ' End Using
    48. MsgBox("mysql connection opened")
    49. sub_end:
    50. End Sub


    Fehler:

    Quellcode

    1. System.Net.Sockets.SocketException wurde nicht behandelt.
    2. ErrorCode=10049
    3. HResult=-2147467259
    4. Message=Die angeforderte Adresse ist in diesem Kontext ungültig
    5. NativeErrorCode=10049
    6. InnerException:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VBob“ ()

    Wenn man die Fehlermeldung genau liest, beschleicht einen der Gedanke, dass die angeforderte Addresse in diesem Kontext vlt nicht gültig sei.
    Mehr kann ich dazu nicht sagen, denn ich kenne die angeforderte Addresse nicht - ich sehe ja nicht deine Angaben.
    Vermutlich hat der Original-Author Angaben gemacht, die in seinem Kontext gültig sind, und du machst Angaben, die es in deinem Kontext nicht sind.
    Frag ihn doch einfach, was man dabei beachten muss, um gültige Angaben machen zu können.
    Ich habe ihn schon Angeschrieben :)
    Ich hoffe dass er meine Frage bald bekommen wird.

    Die Daten habe ich von der Strato webseite:

    Quellcode

    1. DB_SSH_SERVER = "ssh.strato.de"
    2. DB_SSH_USER = "meinedomain.de"
    3. DB_SSH_PASSWORD = "passwort"
    4. DB_MYSQL_SERVER = "rdbms.strato.de"
    5. DB_MYSQL_DATABASE = "datenbank"
    6. DB_MYSQL_USER = "benutzer"
    7. DB_MYSQL_PASSWORD = "passwort"
    8. BASE_NAME = "mein datentable"


    Habe die Daten schon mit Putty ausprobiert.
    Das hat auch geklappt:

    Leider Steh ich auf dem Schlauch.

    port.Start() müsste ja mit Dim port As New Renci.SshNet.ForwardedPortLocal(DB_MYSQL_SERVER, 3306, DB_MYSQL_SERVER, 3306) zusammenhängen.
    Jedoch weiß ich nicht was ich dort sonst eintragen sollte.
    Nur mal so gefragt: Kannst du überhaupt, grundsätzlich per SSH auf den MySQL Server zugreifen?
    Versuch mal über Putty auf den Server zu zugreifen. Sollte dies auch fehlschlagen, kannst du davon ausgehen, dass der Anbieter einfach ned will, dass in irgendeiner weise per SSH drauf zugreift.
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Habe die Daten schon mit Putty ausprobiert.
    Das hat auch geklappt:

    Mit Putty funktioniert es.

    Jedoch gibt mir Visual Basic den oben genannten Adressfehler aus :(
    Ich verstehe nicht warum.